Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将username和userid放入数组_Php_Arrays - Fatal编程技术网

Php 将username和userid放入数组

Php 将username和userid放入数组,php,arrays,Php,Arrays,我想要我的数组,类似这样的东西: array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester") $query = select username, userid from tbluser $result = mysql_query($query); while($row = mysql_fetch_array($result)){ $items = array($row['userid']=>$

我想要我的数组,类似这样的东西:

array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester")
$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);
mysql查询如下所示:

array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester")
$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设置为key,将username设置为val?

试试以下方法:

$query = "select username, userid from tbluser";

$result = mysql_query($query);
$items=array();
while($row = mysql_fetch_array($result)){
    $items[$row['userid']]=$row['username'];
}
print_r($items);
问题是在while块的每个循环中删除并重新分配结果数组($items)

您可以执行以下操作:

$arr = array('userid' => 'username');

$result = mysql_query($query);
if(!$result) die("Query failed");

while($row = mysql_fetch_array($result)){
  $arr[$row['userid']] = $row['username'];
}

既然每个人都在建议同一件事,我想我还是加入吧

当我遇到sql值中的键时,我喜欢先将它们设置为变量,这样看起来会更好:

$query = "select username, userid from tbluser";

$result = mysql_query($query);

while($row = mysql_fetch_array($result)){
    $userid = $row['userid'];
    $username = $row['username']
    $items[$userid] = $username;
}
print_r($items);

它可能会增加两行,但它确实更容易看,并且避免括号中的括号。

使用其他变量,比如Anthony,我只想说,不记得stripslashes(我认为在将它们写入数据库时,您已经完成了mysql\u real\u escape\u string()



由于您只使用关联访问,我建议使用
mysql\u fetch\u assoc()
而不是
mysql\u fetch\u array()


由于您不需要指定想要由
mysql\u fetch\u array()
返回的关联数组,因此它创建了两个数组,一个是
int索引
,另一个是
string索引
(assoc[iative]),尽管这个短脚本不需要太多内存,而且可能速度很快,您应该始终记住
性能

您能澄清一下您想做什么和不想做什么吗?据我所知,你已经有了解决办法。另外,第一个数组与其余数组有什么关系?另外,没有必要提出像这个社区维基这样的问题。你的问题是什么?你的代码看起来不错。另外,你的问题是一个普通的问题,而不是社区维基。我认为问题是,如果他现在按照设置的方式来做,如果有多行,他会在每次迭代中丢失上一个数组,因为它没有推送到数组中。我不理解OP的问题-
$items[key]=value
$items=array相同(key=>value)
,除了前者将附加到
$items
(如果已经定义)之外,而后者将使
$items
成为一个新数组。另外,在该行后面还有一个括号;-)它不应该是
$items[$row['userid']=$row['username'])
或者这是我不熟悉的一种符号样式?很抱歉,我忘了删除“@Andy Shellam:使用数组(key=>value)表单,您每次使用$items[key]时都会重新分配$item变量=值您在数组中创建新元素,因为每个time@mck89-查看我的答案的漂亮版本。mysql\u real\u escape\u string()在查询上下文中转义值,它不会在数据库中留下斜杠。数据库值查询将返回不带斜杠的值。此时执行stripslashes()只会删除合法的斜杠。当他将“用户名”写入数据库时,(当使用mysql_查询(“插入…”)时),出于安全原因,他必须使用mysql_real_escape_字符串。进行安全查询。所以他必须用斜杠。。。