Php 理解参考文献的使用
我想,我了解参考资料的作用。 但现在我遇到了一个例子,它无论如何都无法理解 我看到了一个有趣的脚本,但我不明白他为什么在这个脚本中使用Php 理解参考文献的使用,php,reference,Php,Reference,我想,我了解参考资料的作用。 但现在我遇到了一个例子,它无论如何都无法理解 我看到了一个有趣的脚本,但我不明白他为什么在这个脚本中使用&。 下面是脚本的一部分 foreach ($nodeList as $nodeId => &$node) { if (!$node['id_parrent'] || !array_key_exists($node['id_parrent'], $nodeList)) { $tree[] = &$node;
&
。
下面是脚本的一部分
foreach ($nodeList as $nodeId => &$node)
{
if (!$node['id_parrent'] || !array_key_exists($node['id_parrent'], $nodeList))
{
$tree[] = &$node;
}
else
{
$nodeList[$node['id_parrent']]['children'][] =&$node;
}
}
如果他没有对$node进行任何更改,为什么需要在此处使用引用?
没有什么比得上$node=任何更改
,那么为什么要使用=&$node而不是$node呢
也许你能帮我理解
感谢
$tree[]=&$node代码>
这样做时,树数组将存储对节点列表中相同节点的引用。如果从节点列表中更改节点,它也将在树中更改,当然反之亦然。这同样适用于子数组
如果不使用引用,树和子数组将只包含节点的副本。$tree[]=&$node代码>
这样做时,树数组将存储对节点列表中相同节点的引用。如果从节点列表中更改节点,它也将在树中更改,当然反之亦然。这同样适用于子数组
如果不使用引用,树和子数组将只包含节点的副本
如果他没有对$node进行任何更改,为什么需要在这里使用引用?没有什么比$node=任何更改更好的了,那么为什么要使用=&$node而不是$node呢
因为使用引用还可以避免复制变量,从而节省内存和(通常可以忽略的)性能
如果他没有对$node进行任何更改,为什么需要在这里使用引用?没有什么比$node=任何更改更好的了,那么为什么要使用=&$node而不是$node呢
因为使用引用还可以避免复制变量,从而节省内存和(通常可以忽略的)性能。我建议您看看:
这很容易说明为什么需要通过引用传递变量(&
)
示例代码:
function pass_by_value($param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_value($ar);
foreach ($ar as $elem) {
print "<br>$elem";
}
函数按值传递($param){
push_数组($param,4,5);
}
$ar=数组(1,2,3);
按价值传递(ar);
foreach($ar作为$elem){
打印“
$elem”;
}
上面的代码打印1、2、3。这是因为数组是作为值传递的
function pass_by_reference(&$param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_reference($ar);
foreach ($ar as $elem) {
print "<br>$elem";
}
函数按引用传递(&$param){
push_数组($param,4,5);
}
$ar=数组(1,2,3);
按参考传递($ar);
foreach($ar作为$elem){
打印“
$elem”;
}
上面的代码打印1,2,3,4,5。这是因为数组是作为引用传递的,这意味着函数(pass_by_reference)不会操作传递的变量的副本,而是实际变量本身 我建议您看看:
这很容易说明为什么需要通过引用传递变量(&
)
示例代码:
function pass_by_value($param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_value($ar);
foreach ($ar as $elem) {
print "<br>$elem";
}
函数按值传递($param){
push_数组($param,4,5);
}
$ar=数组(1,2,3);
按价值传递(ar);
foreach($ar作为$elem){
打印“
$elem”;
}
上面的代码打印1、2、3。这是因为数组是作为值传递的
function pass_by_reference(&$param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_reference($ar);
foreach ($ar as $elem) {
print "<br>$elem";
}
函数按引用传递(&$param){
push_数组($param,4,5);
}
$ar=数组(1,2,3);
按参考传递($ar);
foreach($ar作为$elem){
打印“
$elem”;
}
上面的代码打印1,2,3,4,5。这是因为数组是作为引用传递的,这意味着函数(pass_by_reference)不会操作传递的变量的副本,而是实际变量本身 理解不足。非常感谢(这是一件非常有用的事情,参考资料:)这是他们在C
语言课程中教你的东西。要求您使用C数组创建链接列表;这是相同的,除了存储对prev/next的引用之外,您存储的是children.Undermand的引用。非常感谢(这是一件非常有用的事情,参考资料:)这是他们在C
语言课程中教你的东西。要求您使用C数组创建链接列表;除了存储对prev/next的引用之外,这是相同的。实际上,从PHP5开始,对象就不再是这样了。事实上,在PHP5.3中,整个调用时间传递引用构造都是不推荐的。事实上,从PHP5开始,对象就不再是这样了。事实上,PHP5.3中无论如何都不推荐使用整个调用时间传递引用结构。