0

以下に示すメソッドから次のエラーが発生します。

Notice: 初期化されていない文字列オフセット: 30 行目の /path/to/file.php の 5 致命的なエラー: 30 行目の path/to/file.php の空のプロパティにアクセスできません

private function parse($xml, $index = '') {
    echo count($xml->children()); //outputs 6
    $count = 0;
    foreach ($xml->children() as $key => $value) {

        $this->$key[$count] = array();
        $count++;

    }

}

この方法で多次元を構築すると、エラーが発生するのはなぜですか?

割り当てを次のように変更した場合:

$this->$key = array($count = > array());

これは、ループごとにプロパティを再割り当てするだけです。ありがとうリッチ

4

2 に答える 2

1

配列を埋める前に、配列の作成を試みる必要があります。つまり$this->key = array();

つまり、XML要素をループする前です。

于 2012-10-04T15:28:19.040 に答える
1

次の文字列があるとします。

$string = 'abc`;

部分文字列アクセス (配列のように見えます) を実行すると、次の文字が返されます。

echo $string[2]; # c

または、インデックスの外にいるときにエラーが発生します。

echo $string[3]; # null + warning

したがって、オブジェクトのメンバーに$this動的にアクセスします。

$this->$string[2]; # access $this->c

ただし、これはほとんど壊れません。

$this->$string[3]; # access $this->null (not possible)

これにより、空のプロパティ、名前のないプロパティの致命的なエラーが発生します。

これはコードで何が起こるかを説明しています。何をしようとしているのかをまだ伝えていないので、この情報が解析関数の作成を続けるのに役立つことを願っています。

于 2012-10-04T15:33:31.607 に答える