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


Output array keys with a certain key value into a new array in PHP

我想知道是否有一个函数可以以干净且"开箱即用"的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" );

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

这应该适用于您:

(在这里,我用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] => 
        )
)