代码之家  ›  专栏  ›  技术社区  ›  Neel Basu

PHP数组引用错误?

  •  0
  • Neel Basu  · 技术社区  · 14 年前

    使用PHP甚至可以通过引用传递数组吗?或者只是我的虫子。

    class MyStack{
        private $_storage = array();
    
        public function push(&$elem){//See I am Storing References. Not Copy
            $this->_storage[] = $elem;
        }
        public function pop(){
            return array_pop($this->_storage);
        }
        public function top(){
            return $this->_storage[count($this->_storage)-1];
        }
        public function length(){
            return count($this->_storage);
        }
        public function isEmpty(){
            return ($this->length() == 0);
        }
    }
    ?>
    <?php
    $stack = new MyStack;
    $c = array(0, 1);
    $stack->push($c);
    $t = $stack->top();
    $t[] = 2;
    echo count($stack->top());
    ?>
    

    3 但结果是: 2

    1 回复  |  直到 14 年前
        1
  •  2
  •   Artefacto    14 年前

    你可能想要的是:

    class MyStack{
        /* ... */
    
        /* Store a non-reference */
        public function push($elem) {
            $this->_storage[] = $elem;
        }
    
        /* return a reference */
        public function &top(){
            return $this->_storage[count($this->_storage)-1];
        }
    
        /* ...*/
    }
    
    /* You must also ask for a reference when calling */
    /* ... */
    $t = &$stack->top();
    $t[] = 2;