多次元配列のループ読み取り問題
多次元配列
array(
'a'=>array(
'a2'=>array('dd','ff',' gg') ,
'a3'=>array('dd','ff','gg')
),
'b'=>array(
'b2'= >array ('22','55','88'),
'b3'=>array(
'cs'=>array('nn','mm','xx' )
)
)
)
文字列
a.a2
b.b2
b.b3.cs
による読み方この文字列に対応する配列を取得しますか?
例:
a.a2 = ['a']['a2'] 結果は array('dd','ff','gg') となります
b.b2 = [ 'b ']['b2'] 結果は array('22','55','88')
b.b3.cs = ['b']['b3']['cs'] となります。結果は array ('nn','mm','xx')
です。 注: 配列の深さに制限はありません。使用しないことをお勧めします。 eval
ところで、eval は安全なだけではありません 質問ですが、かなり効率が悪いのでしょうか?
-----解決策---------
$ar = 配列( 'a'=>配列( 'a2'=>array('dd','ff','gg'), 'a3'=>array('dd','ff','gg') )、 'b'=>配列( 'b2'=>配列('22','55','88'), 'b3'=>配列( 'cs'=>array('nn','mm','xx') ) ) ); $s = 'b.b3.cs'; $p =& $ar; foreach(explode('.', $s) as $k) { if(isset($p[$k])) $p = $p[$k]; } print_r($p); <br><font color="#e78608">------解決策---------</font><br>
$ar = 配列( 'a'=>配列( 'a2'=>array('dd','ff','gg'), 'a3'=>array('dd','ff','gg') )、 'b'=>配列( 'b2'=>配列('22','55','88'), 'b3'=>配列( 'cs'=>array('nn','mm','xx') ) ) ); $s = 'b.b3.cs'; $s =explode('.', $s); $p =& $ar; For($i=0;$i<count if print_r></count><font color="#e78608">------解決策----------------------</font><br>eval は絶対に使用できないため、<br> が必要です<br> を反復しないでください。では、「.」で区切られたこれらのキーの値をどのように識別するのでしょうか? <br><font color="#e78608">------解決策---------</font><br>foreach を使用したくない場合は、あなたはそれを考慮しません。効率の問題については、値を再帰的に取得する独自の関数を作成できますが、PHP では再帰関数は非常に非効率です<div class="clear"></div>