foreach ($cc as $key => &$item);$item加&與不加&的區別

    public function test(){        
            // 加&的:            
            $cc = [[1],[2]];
            foreach ($cc as $key => &$item){
                $item['aa'] = 111;
            }
            var_dump($cc);die;

            // 不加&的
            $cc = [[1],[2]];
            foreach ($cc as $key => $item){
                $item['aa'] = 111;
            }
            var_dump($cc);die;

            // 不加&,又想達到加&的效果
            $cc = [[1],[2]];
            foreach ($cc as $key => $item){
                $cc[$key]['aa'] = 111;
            }
            var_dump($cc);die;

            // 所以foreach中$item加&應該是爲了偷個懶吧
            // 這裏還涉及指針的知識,有興趣的推薦瞭解一下哦
    }
// 加&輸出的結果:
array(2) {
  [0]=>
  array(2) {
    [0]=>
    int(1)
    ["aa"]=>
    int(111)
  }
  [1]=>
  &array(2) {
    [0]=>
    int(2)
    ["aa"]=>
    int(111)
  }
}

// 不加&輸出的結果
array(2) {
  [0]=>
  array(1) {
    [0]=>
    int(1)
  }
  [1]=>
  array(1) {
    [0]=>
    int(2)
  }
}

&:引用賦值的意思

如:

// 用在變量上:    
public function test()
    {
            $a = 1;
            $b = &$a;
            $b = 2;
            echo $a;die;
    }
    // 輸出的結果:2


// 用在方法上:
public function &quote()
{
    $b = 1;
    $b++;

    return $b;
}

public function test()
{
    $a = $this->&quote();
    var_dump($a);// 2

    $a = 5;
    $a = $this->&quote();
    var_dump($a);// 6
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章