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