函数参数传递引用是很常见的问题,但是最近在使用PHP写网页的时候发现了这样的问题!

1PHP 引用数组做函数参数    public function delete(&$arr){
2PHP 引用数组做函数参数        unset($arr);
3PHP 引用数组做函数参数    }
4PHP 引用数组做函数参数    public function indexAction()
5PHP 引用数组做函数参数    {
6PHP 引用数组做函数参数        $arr = array(1,2,3,4,5);
7PHP 引用数组做函数参数        $this->delete($arr);
8PHP 引用数组做函数参数        print_r($arr);
9PHP 引用数组做函数参数    }

 

代码很简单,在函数indexAction函数中定义数组,引用传递给delete函数;

在delete函数中将整个数组释放掉,

函数返回后在indeAction中打印$arr内容如下:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

 

但是删除数组中的第三个元素没有问题:

1PHP 引用数组做函数参数    public function delete(&$arr){
2PHP 引用数组做函数参数        unset($arr[2]);
3PHP 引用数组做函数参数    }
4PHP 引用数组做函数参数    public function indexAction()
5PHP 引用数组做函数参数    {
6PHP 引用数组做函数参数        $arr = array(1,2,3,4,5);
7PHP 引用数组做函数参数        $this->delete($arr);
8PHP 引用数组做函数参数        print_r($arr);
9PHP 引用数组做函数参数    }

输出结果:

Array ( [0] => 1 [1] => 2 [3] => 4 [4] => 5 )

不知道是为什么;简单的解决办法:

将修改后的数组返回,希望如果谁有更好的办法告诉我!

 1PHP 引用数组做函数参数    public function delete(&$arr){
 2PHP 引用数组做函数参数        unset($arr);
 3PHP 引用数组做函数参数        return $arr;
 4PHP 引用数组做函数参数    }
 5PHP 引用数组做函数参数    public function indexAction()
 6PHP 引用数组做函数参数    {
 7PHP 引用数组做函数参数        $arr = array(1,2,3,4,5);
 8PHP 引用数组做函数参数        $arr = $this->delete($arr);
 9PHP 引用数组做函数参数        print_r($arr);
10PHP 引用数组做函数参数    }

 

 

相关文章: