0

これは簡単な質問かもしれませんが、オブジェクト ($this) をダンプしていますが、これは非常に巨大で、配列内の特定のポイントに到達する必要があります

$this->varA->varB->varC->varD->what_I_need

必要な変数がそこにあることはわかっており、ctrl+f を使用してそれを見つけることができますが、配列が入れ子になっているため、PHP でどのようにアクセスすればよいかわかりません。これを行うための最良の方法についてのアイデアはありますか?

4

1 に答える 1

1

フレームワークからライブラリを見ることを躊躇しないでください。

[CakePHP] は、ドット構文表記の文字列を使用して配列にナビゲートできる素晴らしいクラスを作成しました。このライブラリはHashとして知られています。

あなたがこれを持っている場合:

$var = array(
    'Element1' => array(
        'First_rule' => true,
        'Second_rule' => false,
    ),
    'Element2' => array(
        'First_rule' => 'none',
        'Other_rule' => 'otherone',
    ),
);

文字列を使用して、この配列からデータを簡単に抽出できます。

特定の要素から取得できる情報は 1 つだけです。

$extracted_other_rule = Hash::extract($var, 'Element2.Other_rule');

戻り値 :

Array
(
    [0] => otherone
)

または、それを含む配列内の任意の要素からすべての「First_rule」インデックスを抽出することもできます。

$extracted_rules = Hash::extract($var, '{s}.First_rule');

これを返します:

Array
(
    [0] => 1
    [1] => none
)

深さが定義されていない巨大な配列をナビゲートする必要がある場合は、再帰関数を作成して、「$path」という名前の文字列を再帰アクションに転送します。この種の大きな関数を作成して、XML ストリーム全体を JSON 文字列に解析し、すべてのキーを独自のルールとパラメーターの配列で解析しました。

于 2013-07-19T07:35:22.317 に答える