2016-08-09 17:05:02 2662次浏览 3条回答 0 悬赏 15 金钱
function get_list($cnd = array(), &$count = false)
{
    $datas = 'yes';
    $count && $count = rand(1, 10000);
    return $datas;
}

$count=1;
$data = get_list($cnd,$count);
echo $count;

最后输出的是随机数,整个过程是怎么走的?
进行到&$count = false这一步的时候$count是多少

最佳答案

  • robbins 发布于 2016-08-09 17:56 举报

    php的引用和c的引用一个意思,内存地址。函数传引用相当于将地址传过去也就是变量本身,而普通传值只是传一个常量值。
    再补充点吧。&$count相当于$count的内存地址,函数中传function xxx(&count)那么传过去的是变量count的内存地址,所以在函数中$count = "xxx"会直接改变变量count的值,因为他们都是一个内存地址。

    毕竟php是从C来的,楼主对这些概念不清楚。可以看c++指针部分,都是对内存地址的操作。

    觉得很赞
  • 回答于 2016-08-09 17:57 举报

    看在你多悬赏 5 金钱的份上,我说两句。输出随机数就对了,因为你用了 &,你上面那么多,其实就是这样的。

    function get_list(&$count)
    {
        $count = rand(1, 10000);
        
    }
    
    $count=1;
    $data = get_list($count);
    echo $count;
    

    结果依旧输出随机数。

    1 条回复
    回复于 2016-08-09 19:43 回复

    栈与堆,地址

  • 回答于 2016-08-10 18:07 举报

    细细品味,,又长了点知识。。谢谢各位。 之前看这到样写 还有点懵圈 。现在悟了。。记得我刚学php 那会还是理解的。后来,工作上没用到,又给忘了。。

您需要登录后才可以回答。登录 | 立即注册
xczizz
副总裁

xczizz 比尔吉沃特

注册时间:2016-03-08
最后登录:2020-11-09
在线时长:97小时50分
  • 粉丝6
  • 金钱4967
  • 威望90
  • 积分6837

热门问题