我有以下代码:
print_r($queries);
$id2query = array();
while ($res_array = mysql_fetch_array($results)) {
$id = $res_array['id'];
$query = $res_array['query'];
$id2query[$id] = $query;
}
print_r($queries);
有趣的是,循环前后printr_r
返回不同的东西。
有人知道怎么可能吗?
ADDED
$queries
是一个数组。它显示代码是函数的一部分,$queries
是函数的参数之一。在循环之前它返回:
Array ( [0] => )
并在循环之后返回:
Array ( [0] => web 2.0 )
已添加2
web 2.0
来自$res_array
。以下是$res_array
:
Array ( [0] => 17 [id] => 17 [1] => web 2.0 [query] => web 2.0 [2]
但我不明白$res_array
的值如何迁移到$queries
。
已添加3
我试过
print "AAAA".var_dump($queries)."BBB";
返回AAABBB
。
已添加4
我设法以正确的方式使用var_dump
,这是它在循环之前返回的内容:
array(1) { [0]=> &string(0) "" }
这就是循环之后我所拥有的:
array(1) { [0]=> &string(7) "web 2.0" }
但我不明白这意味着什么。
答案 0 :(得分:1)
ADDED 4 下方的var_dump显示它,该数组包含对字符串的引用。因此它不是该字符串的副本,它类似于指针(我知道,它们不是真正的指针,请参阅下面的PHPDocs)到原始字符串。因此,如果那个被更改,引用也会显示更改的值。
我建议你看一下:
PHPDoc References
PHPDoc What references do
示例代码:
$s = "lulu";
$a = array(&$s);
var_dump($a);
$s = "lala";
var_dump($a);
首先var_dump将返回:
array(1) {
[0]=>
&string(4) "lulu"
}
第二个:
array(1) {
[0]=>
&string(4) "lala"
}