$ array变量不等于$ GLOBALS ['玩家'] [$ name]定义为$ GLOBALS ['玩家'] [$ name] = array()

时间:2016-07-30 17:12:12

标签: php

使用下面的代码,但是当我使用

时,它不起作用
<?php
    $GLOBALS['players'] = array();

    function add($name) {
        $array = $GLOBALS['players'][$name] = array();
        array_push($array, "b");
    }

    add("a");
    print_r($players);
?>

(输出:Array([a] =&gt; Array()))这里的代码

<?php
    $GLOBALS['players'] = array();

    function add($name) {
        $array = $GLOBALS['players'][$name] = array();
        array_push($GLOBALS['players'][$name], "b");
    }

    add("a");
    print_r($players);
?>

(输出:数组([a] =&gt;数组([0] =&gt; b)))它工作正常。为什么$ array在引用同一个数组时不起作用。

1 个答案:

答案 0 :(得分:0)

这非常简单,当您将值传递给$array时,您将$GLOBAL数组传递给新变量时,您并未引用该变量{ {1}}变量。

简而言之:$GLOBAL$array是两个不同的变量。这样做就像:

$GLOBAL

要解决这个小问题,您必须将变量传递给$a = 10; $b = $a; $b++; print_r($a); // Will not print 11, but 10, because you edited the var $b, that is different from $a. ,方法如下:

$array