将用户名和用户ID转换为一个数组。
将用户名和用户ID转换为一个数组。
我想要我的数组,类似于这样:
array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester")
MySQL查询类似于这样:
$query = select username, userid from tbluser $result = mysql_query($query); while($row = mysql_fetch_array($result)){ $items = array($row['userid']=>$row['username']); } print_r($items);
我该如何让userid作为键,username作为值呢?
问题的原因是在while循环的每个迭代中,删除并重新分配结果数组($items)。这导致每次循环都会创建一个新的数组,而不是在现有数组上进行追加。
解决方法是将数组($items)的声明放在while循环之前,并在循环内部使用索引将每个用户名(username)与用户ID(userid)关联起来。
以下是修复后的代码:
$items=array(); // 在while循环之前声明数组 while($row = mysql_fetch_array($result)){ $items[$row['userid']]=$row['username']; // 使用索引将用户名与用户ID关联起来 } print_r($items);
这样做可以确保在每个循环迭代中,用户名和用户ID都会被添加到同一个数组中,而不是创建一个新的数组。这样就可以正确地将用户名和用户ID存储为数组的键值对。
问题的出现原因:
在这段代码中,问题的出现是因为开发人员想要将从SQL查询结果中获取的用户名和用户ID存储在一个数组中。为了使代码更加清晰易读,开发人员选择将用户名和用户ID分别赋值给变量,然后将它们存储在一个名为$items的数组中。
解决方法:
为了实现将用户名和用户ID存储在数组中的目标,开发人员采取了以下解决方法:
1. 首先,定义一个SQL查询语句,该语句从tbluser表中选择用户名和用户ID。
2. 使用mysql_query函数执行查询,并将结果赋值给变量$result。
3. 使用while循环遍历查询结果。在每次迭代中,将当前行的用户ID和用户名分别赋值给变量$userid和$username。
4. 创建一个名为$items的数组,并使用用户ID作为键,用户名作为值,将它们存储在数组中。
5. 最后,使用print_r函数打印出$items数组的内容,以便查看结果。
通过以上解决方法,开发人员成功将用户名和用户ID存储在一个数组中,并通过print_r函数输出了数组的内容。这样做不仅使代码更易读,还避免了嵌套的括号。