将具有特定键值的数组键输出到PHP中的新数组中

时间:2015-03-26 23:24:32

标签: php arrays

我想知道是否有一个函数可以在干净的“开箱即用”PHP方式中完成以下操作,因此不需要在其中创建带有条件的foreach循环。

我有一些对象数组,例如:

Array
(
    [1072] => Array
        (
            [a] => True
            [b] => False
            [c] => False
            [d] => True
        )

    [1067] => Array
        (
            [a] => False
            [b] => True
            [c] => False
            [d] => False
        )

)

我想只将值为false的数组键传输到一个新的数组,我得到类似的结果:

Array
(
    [1072] => Array(b,c)
    [1067] => Array(a,c,d)
)

更新

我在发布问题之前尝试阻止的初始解决方案如下。我已经检查了每个键值,我已经执行了foreach循环。如果该值等于False,我使用array_push将该特定数组键附加到新结果数组。

更简洁,更紧凑的解决方案是我在发现array_keys后发现的以下行:

$results = array_keys( $thearray, "False" );

它仅输出具有值$thearray的给定数组False的键。

1 个答案:

答案 0 :(得分:1)

这应该适合你:

(这里我使用array_map()浏览每个innerArray。然后我用array_filter()过滤所有值,这些都是真的,然后我只返回所有内容)

<?php

    $arr = array_map(function($v){
        return array_filter($v, function($v){
            return !$v;
        });
    }, $arr);

?>

输出:

Array
(
    [1072] => Array
        (
            [b] => 
            [c] => 
        )

    [1067] => Array
        (
            [a] => 
            [c] => 
            [d] => 
        )

)