我有以下一段代码:
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
返回不同的东西。
有人知道这是怎么可能的吗?
添加 $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
I tried
print "AAAA".var_dump($queries)."BBB";
返回AAABBB
添加4
我已经设法以正确的方式使用var_dump
,这是它在循环之前返回的内容:
array(1) { [0]=> &string(0) "" }
这是我在循环之后的内容:
array(1) { [0]=> &string(7) "web 2.0" }
但我不明白这是什么意思
add 4下面的var_dump显示,数组包含对字符串的引用。所以它不是那个字符串的副本,它有点像指向原始字符串的指针(我知道,它们不是真正的指针,参见下面的PHPDocs)。因此,如果该值被更改,引用也会显示更改后的值。
我建议你看一下:
PHPDoc引用
PHPDoc
示例代码:
$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"
}