如何在php中过滤空值数组
我有这样一个数组:如何在php中过滤空值数组,php,arrays,Php,Arrays,我有这样一个数组: $main = [ [ 'mykey' => 'mykeyvalue', 'mykey2' => 'mykey2value', 'mykey5' => '', 'mykey4' => '', 'mykey5' => 'mykey5value', ], [ 'mykey' => 'mykeyvalue', 'mykey2' => 'mykey2value', '
$main = [
[
'mykey' => 'mykeyvalue',
'mykey2' => 'mykey2value',
'mykey5' => '',
'mykey4' => '',
'mykey5' => 'mykey5value',
],
[
'mykey' => 'mykeyvalue',
'mykey2' => 'mykey2value',
'mykey5' => 'mykey3value',
'mykey4' => 'mykey4value',
'mykey5' => 'mykey5value',
],
[
'mykey' => 'mykeyvalue',
'mykey2' => 'mykey2value',
'mykey5' => '',
'mykey4' => '',
'mykey5' => 'mykey5value',
],
];
我正在尝试过滤主数组,这样我们只会得到所有键都有值的数组
所以最后我们应该只剩下第二个数组了
我可以在数组中循环检查值是否为空,而不是将其添加到主数组中。但我有一个数组,它的结果超过24K个
因此,我正在寻找实现此目的的最佳方法?您可以通过对的嵌套调用来实现所需的结果,删除筛选空值后长度不同的所有子阵列:
$result = array_filter($main, function ($arr) {
return count($arr) == count(array_filter($arr));
});
print_r($result);
输出(用于示例数据):
不过,最好在MySQL查询中尝试实现这一点,可能类似于:
SELECT *
FROM yourtable
WHERE mykey != '' AND mykey2 != '' AND mykey3 != '' AND mykey4 != '' AND mykey5 != ''
各位,如果你们能评论一下你们的方法,我将不胜感激。如果您不想出于任何原因编写代码:)那么。。。您必须在某个点循环这些24K条目。然后,您必须检查所有子值是否为空(一旦有一个子值为空,您就可以停止)。我能看到的唯一优化是,是否要利用
yield
来防止将另一个潜在的巨大数组分配到内存中。这取决于你需要对结果做什么,我想问的一个问题是,初始数组是从哪里来的?它来自数据库吗?API?你不能在那里过滤这些东西吗?它来自wordpress数据库。我想将数据从wordpress数据库导入我的自定义web应用程序
SELECT *
FROM yourtable
WHERE mykey != '' AND mykey2 != '' AND mykey3 != '' AND mykey4 != '' AND mykey5 != ''