我想知道是否有一个函数可以在干净的“开箱即用”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
的键。
答案 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] =>
)
)