doume1301 2014-12-21 19:45
浏览 17

使用数组递归选择数组键

I am having a bit of trouble trying to explain this correctly, so please bear with me...

I need to be able to recursively select keys based on a given array. I can do this via a fairly simple foreach statement (as shown below). However, I prefer to do things via PHP's built in functions whenever possible.

$selectors = array('plants', 'fruits', 'apple');
$list = array(
    'plants' => array(
        'fruits' => array(
            'apple' => 'sweet',
            'orange' => 'sweet',
            'pear' => 'tart'
        )
    )
);

$select = $list;
foreach ($selectors as $selector) {
    if (isset($select[$selector])) {
        $select = $select[$selector];
    } else {
        exit("Error: '$selector' not found");
    }
}

echo $select;

See this code in action

My Question: Is there a PHP function to recursively select array keys? If there is not, is there a better way than in the example above?

  • 写回答

1条回答 默认 最新

  • duanfan9859 2014-12-21 23:37
    关注

    If i understand , you are searching about : http://php.net/recursivearrayiterator and http://php.net/recursiveiteratoriterator

    And code something like that:

    $my_itera = new RecursiveIteratorIterator(new RecursiveArrayIterator($my_array));
    
    $my_keys = array();
    
    foreach ($my_itera as $my_key => $value) {
    
    
        for ($i = $my_itera->getDepth() - 1; $i >= 0; $i--) {
            $my_key = $my_itera->getSubIterator($i)->key() . '_' . $my_key;
        }
        $my_keys[] = $my_key;
    }
    var_export($my_keys);
    

    I Hope it works.

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码