如何检查多维数组是否为空?

2022-08-30 16:55:22

基本上,我有一个多维数组,我需要检查它是否只是空的。

我目前有一个声明试图这样做:if

if(!empty($csv_array)) 
{   
    //My code goes here if the array is not empty
}

虽然,无论多维数组是否为空,它都被激活了。if statement

这是数组为空时的样子:

Array
(
    [0] => Array
        (
        )

)

这是数组在包含一些元素时的样子:

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
            [1] => question1
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

    [2] => Array
        (
            [1] => question2
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

    [3] => Array
        (
            [1] => question3
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

)

我的数组元素总是从 1 开始,而不是从 0 开始。长话说为什么,没有意义解释,因为它与这个问题无关。

如果需要,这是创建数组的代码。它正在从上传的 CSV 文件中提取。

$csv_array = array(array());
if (!empty($_FILES['upload_csv']['tmp_name'])) 
{
    $file = fopen($_FILES['upload_csv']['tmp_name'], 'r');
}

if($file)
{
    while (($line = fgetcsv($file)) !== FALSE) 
    {
        $csv_array[] = array_combine(range(1, count($line)), array_values($line));
    }

    fclose($file);
}

因此,总之,我需要修改 my 以检查数组是否为空。if statement

提前致谢!


答案 1

您可以筛选数组,默认情况下,这将删除所有空值。然后,您可以检查它是否为空:

$filtered = array_filter($csv_array);
if (!empty($filtered)) {
  // your code
}

注意:这将适用于您的问题中发布的代码,如果您向其中一个数组添加了另一个维度,该数组为空,则不会:

$array = array(array()); // empty($filtered) = true;
$array = array(array(array())); // empty($filtered) = false;

答案 2

因此,只需检查数组中是否存在第一个键即可。

if(!empty($csv_array[1])) 
{   
    //My code goes here if the array is not empty
}