これは簡単な質問かもしれませんが、オブジェクト ($this) をダンプしていますが、これは非常に巨大で、配列内の特定のポイントに到達する必要があります
$this->varA->varB->varC->varD->what_I_need
必要な変数がそこにあることはわかっており、ctrl+f を使用してそれを見つけることができますが、配列が入れ子になっているため、PHP でどのようにアクセスすればよいかわかりません。これを行うための最良の方法についてのアイデアはありますか?
これは簡単な質問かもしれませんが、オブジェクト ($this) をダンプしていますが、これは非常に巨大で、配列内の特定のポイントに到達する必要があります
$this->varA->varB->varC->varD->what_I_need
必要な変数がそこにあることはわかっており、ctrl+f を使用してそれを見つけることができますが、配列が入れ子になっているため、PHP でどのようにアクセスすればよいかわかりません。これを行うための最良の方法についてのアイデアはありますか?
フレームワークからライブラリを見ることを躊躇しないでください。
[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 文字列に解析し、すべてのキーを独自のルールとパラメーターの配列で解析しました。