Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中过滤空值数组_Php_Arrays - Fatal编程技术网

如何在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 != ''