0

いろいろな方法を試しました。最初の部分はうまく機能しましたが、果物の名前を取得するための2番目の部分は機能していません。

にオブジェクトを保存しています。このオブジェクト$foodprint_r()出力を以下に示します。

Food Object
(
    [id] => 1
    [values] => Array
        (
            [name] => Myfood
        )
    [objects] => Array
        (
            [0] => Fruits Object
                (
                    [id] => 1
                    [values] => Array
                        (
                            [name] => My Fruits
                        )
                    [objects] => Array
                        (
                            [0] => FruitType Object
                                (
                                    [id] => 1
                                    [values] => Array
                                        (
                                            [name] => Orange1
                                        )
                                )
                        )
                )
        )
)

このコードは「Myfood」を正常に表示します。

foreach ($food->values as $key => $value) {
    echo "$key => $value";
}

このコードは「私の果物」を正常に表示します。

echo '<br/>';

foreach ($food->objects as $id => $owner) {
    foreach ($owner->values as $key => $value) {
        echo "$key => $value";
    }
}

FruitTypeオブジェクトの値を表示する2番目のコードブロックが必要ですOrange1。いくつか試してみましたが、うまくいきませんでした。ありがとう

4

2 に答える 2

1

すべての開発者が直面する最大の障害に遭遇したように見えます...名前を付けます。あなたの最終目標が100%わからないので、私はおそらくあまりうまくやっていないでしょうが、ネストループに関する限り、あなたは正しい軌道に乗っていました。

foreach ($food->objects as $i => $obj) {
    echo "name => {$obj->values['name']}\n";
    foreach ($obj->objects as $j => $type) {
        foreach($type->values as $key => $val){
            echo "    $key => $val\n";
        }
    }
}

実例

ただし、オブジェクトの構造を見ると、再帰的な反復の方が読みやすい場合があります。

于 2013-03-14T15:15:04.943 に答える
0

get_object_vars()関数を使ってみませんか?

詳細はこちら: http: //php.net/manual/fr/function.get-object-vars.php

于 2013-03-14T14:40:27.530 に答える