php引用传递

php中的引用传递的含义:不同的名字访问同一个变量内容。区别于传值调用,引用传递又叫做传址调用,传递的其实是变量内容所处的内存地址。
举例说明:参考https://www.cnblogs.com/alsf/p/9621362.html



    function test(&$a){
     
        $a=$a+100;
    }
    $b=1;
    echo $b;//输出1

    test($b);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了

    echo "
"
; echo $b;//输出101 ?>

下面介绍一个引用传递应用的实例:利用引用传递生成无限级分类

$typeListValue = [];
foreach ($typeList as $key=>$value) {
     
    $typeListValue[$value['id']] = $value;
}
$typeListData = [];
foreach ($typeListValue as $key=>$value) {
     
    if ($value['parent_id'] != 0) {
     
        $typeListValue[$value['parent_id']]['type'][] = &$typeListValue[$key];
    } else {
     
        $typeListData[] = &$typeListValue[$key];
    }
}

另外,无限极分类也可以使用递归来实现,但是递归的原理是不断调用函数(调自己),而每次调用函数都需要在内存栈中分配空间以保存参数,返回值和临时变量,而往栈中压入和弹出数据也都需要时间,所以降低了效率,并且有可能会造成调用栈溢出的情况。参考:使用递归的优缺点

你可能感兴趣的:(PHP,解决方案,php,引用传递,无限级分类)