Heim > Backend-Entwicklung > PHP-Tutorial > 多维数组循环读取有关问题

多维数组循环读取有关问题

WBOY
Freigeben: 2016-06-13 13:10:23
Original
806 Leute haben es durchsucht

多维数组循环读取问题
多维数组
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 code
$ar = 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')
  )
  )
);
$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>
Nach dem Login kopieren
PHP code
$ar = 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')
      )
  )
);
$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>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage