ホームページ >バックエンド開発 >PHPチュートリアル >多次元配列のループ読み取りに関する問題

多次元配列のループ読み取りに関する問題

WBOY
WBOYオリジナル
2016-06-13 13:10:23809ブラウズ

多次元配列のループ読み取り問題
多次元配列
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 は安全なだけではありません 質問ですが、かなり効率が悪いのでしょうか?

-----解決策---------

PHP コード
$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>
PHP コード
$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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。