search

Home  >  Q&A  >  body text

php - 循环数组取值效率问题

如图所示 三维数组

好的。。那么。问题来了。。
如果想删除所有第三层里的seeAnalysis这个键值
正常是用两个foreach,到第三层然后unset
可是就有效率问题
第三层数组可能有数千个之多

那末。。有什么提高效率的办法吗~

巴扎黑巴扎黑2822 days ago252

reply all(2)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 15:13:46

    为何不换一种思路呢?
    你拿着数组是为了什么?还不是为了模板展现,
    你在模板展现的时候,是不是需要遍历?
    那么,你在模板遍历的时候,先判断seeAnalysis,根据条件忽略不就行了?

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:13:46

    phpbool array_walk_recursive ( array &$input , callable $funcname [, mixed $userdata = NULL ] )
    

    看一个例子:

    php<?php 
    /** 
     * http://uk1.php.net/array_walk_recursive implementation that is used to remove nodes from the array. 
     * 
     * @param array The input array. 
     * @param callable $callback Function must return boolean value indicating whether to remove the node. 
     * @return array 
     */ 
    function walk_recursive_remove (array $array, callable $callback) { 
        foreach ($array as $k => $v) { 
            if (is_array($v)) { 
                $array[$k] = walk_recursive_remove($v, $callback); 
            } else { 
                if ($callback($v, $k)) { 
                    unset($array[$k]); 
                } 
            } 
        } 
    
        return $array; 
    } 
    ?> 
    

    reply
    0
  • Cancelreply