php引用以及php变量未使用
PHP中文网
PHP中文网 2017-04-11 09:23:08
0
3
618

提一个关于引用的问题。代码如下:
1.


function foo($var){
    $var++;
}

在phpstorm里面是提示$var变量未使用,如果添加引用传递或者打印

2.

function foo(&$var){   //引用传递
    $var++;
}  

3.

function foo($var){   //打印或者其他比如return等操作
    echo $var;
}

就不会提示未使用,难道自增符号不算操作变量吗?
然后调用的时候:

$a = 5;foo($a);

1的结果仍是5,2的结果则为6。在引用和非引用的过程中,两个函数各是怎么操作$var这个变量的。

PHP中文网
PHP中文网

认证0级讲师

reply all(3)
刘奇

首先关于phpstorm提示变量未使用这个,它的提示信息确实是正确的,在php的语法和代码风格检查方面,phpstorm向来是做的非常棒的。

函数参数的传值方式不同,按照值传递的时候,在函数内部实际上传递过来的是变量的副本,因此在函数内部修改也是修改的这个副本,不会对原变量产生影响。函数内部简单的修改变量$var的时候,仅仅是对其值进行了自增运算,没有输出任何结果,没有参与任何复杂的业务逻辑,这些对于phpstorm来说都是完全可以分析出来的。

而引用传值的方式,实际上函数内部的$var和外部的$var都是指向同一片内存区域,内部的修改,对外部是可见的(变量$var参与了输出)。

Ty80

PhpStorm好是很牛啊。

function foo($var){
    $var++;
}

++是个操作,但是foo调用了也拿不结果,也不能通过参数影响程序的执行,所以phpstorm反过来推导这个$var没被使用。

Peter_Zhu

$var++ 的意思是 $var = $var +1; 那你等号左边的这个$var 还是没有被使用.所以phpstorm这么提示是对的

第二个问题就就是函数的基础问题了. 函数操作的是变量的拷贝,不是变量本身,所以 $var++ 不会影响外面的这个$var

而传引用,就直接操作这个变量本身,所以外面的这$var 的值也变了

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!