• 技术文章 >后端开发 >php教程

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

    2016-06-13 13:10:23原创393
    多维数组循环读取问题
    多维数组
    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);
    
    ------解决方案--------------------
    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------解决方案--------------------
    既然 绝对不能用eval
    还要 不要遍历
    那么你打算如何识别被 “.” 分隔的这些键值呢?
    ------解决方案--------------------
    你如果想要不用foreach,如果不考虑效率问题可以自己写个函数递归取值,不过递归函数在php里效率低的可怕

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:array gt nbsp cs ar

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• Symfony2函数用法实例分析,symfony2实例分析_PHP教程• Drupal读取Excel并导入数据库实例_PHP教程• PHP中的SimpleXML处理_PHP教程• PHP页面跳转与跨站提交伪造Referer地址来源_PHP教程
    1/1

    PHP中文网