0

そのクラスにローカルな関数を使用して、クラス内で宣言された配列にいくつかのデータを追加しようとしていますが、追加後の外部からのダンプは空の配列を報告しています:

Checking...
array(0) { }

コードは次のとおりです。

error_reporting(E_ALL);
ini_set('display_errors', '1');

class workerClass {
    // With the following declaration, the dump outside the class will report only "a", "b" and "c".
    //public $arr = array("a", "b", "c");
    // With the following declaration instead, the dump outside the class will report an empty array.
    public $arr = array();

    function appendData() {
        global $arr;

        $arr[] = "d";
    }

}

// Start check.
echo "Checking...<br />";

$worker = new workerClass();
// Trying to append some data to the array inside the class.
$worker -> appendData();
var_dump($worker -> arr);
?>

私は何を間違っていますか?

4

1 に答える 1

1

global $arrオブジェクトの の代わりに値を割り当てています$arr

function appendData() {
    global $arr;

    $arr[] = "d";
}

する必要があります

function appendData() {
    $this->arr[] = "d";
}

Classes と Objectsに関する PHP のドキュメントにも同様の情報があります。

于 2013-06-18T16:23:12.863 に答える