文字列インデックス パスを使用したネストされた配列の値へのアクセス
PHP では、次を使用してネストされた配列から値を取得する必要がある状況に遭遇します。文字列として定義された動的インデックス パス。セキュリティ上のリスクを引き起こす eval() を使用せずにこれを実現するには、次のアプローチを検討できます。
配列の例を考えてみましょう。
<code class="php">Array ( [0] => Array ( ['Data'] => Array ( ['id'] => 1 ['title'] => Manager ['name'] => John Smith ) ) [1] => Array ( ['Data'] => Array ( ['id'] => 1 ['title'] => Clerk ['name'] => ( ['first'] => Jane ['last'] => Smith ) ) ) )</code>
Manager の値を取得するには、 [0]['Data']['name'] のインデックス パスでは、次の関数を使用できます:
<code class="php">function getIndexValue($indexPath, $arrayToAccess) { $paths = explode(":", $indexPath); $itens = $arrayToAccess; foreach($paths as $ndx){ $itens = $itens[$ndx]; } return $itens; }</code>
Calling getIndexValue("[0]['Data']['name'] ", $myArray) は Manager を返します。同様に、[1]['Data']['name']['first'] のインデックス パスを使用して Jane の値を取得するには、更新されたパスで同じ関数を使用できます。
explode()を使用してパスを個々のセクションに分割し、各セクションに基づいて配列を反復的に移動することで、eval()を使用せずに効果的に値にアクセスでき、安全で柔軟なアプローチを維持できます。
以上がPHP で文字列インデックス パスを使用して入れ子になった配列の値にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。