为什么我的 PHP 数组没有输入函数为不为空


Why is my PHP array not entering a function as not being empty?

基本上,如果我的数组为空,我正在运行一个if statement

例如:

$csv = array();
$csv_empty = array_filter($csv);
if (!empty($csv_empty)) 
{
    Other code goes here
}
unset($csv);

不幸的是,我的if statement根本没有被输入。这是我的数组的转储:

Array
(
    [0] => Array
        (
            [0] => email1@foo.com
            [1] => email2@foo.com
            [2] => email3@foo.com
        )
)

如果需要,这就是通过 CSV 文件上传创建我的数组的方式(这不是我引用的 if 语句。这个if语句运行得很好,没有其他空数组检查if语句):

if(($handle = fopen($tmpName, 'r')) !== FALSE) 
{
    $row = 0;
    while (($result = fgetcsv($handle)) !== false)
    {
        $csv[] = $result;
    }
    fclose($handle);
}

有人知道为什么我的if statement没有运行吗?可能是因为我的数组是 2 级吗?如果我将数组更改为单级,这会解决我的问题吗?

根据您提供的内容,我没有看到任何问题:

$csv = array( 0 => array( 0 => 'email1@foo.com' ,1 => 'email2@foo.com' ,2 => 'email3@foo.com' ) );
$csv_empty = array_filter( $csv );
if( ! empty( $csv_empty ) )
    echo 'In If';
else
    echo 'In Else';

显示:

In If

但是如果我认为数组有 false s 作为项目,则按array_filter过滤:

$csv = array( 0 => false ,1 => false);
$csv_empty = array_filter( $csv );
if( ! empty( $csv_empty ) )
    echo 'In If';
else
    echo 'In Else';

显示

In Else

我认为您的问题可能在其他地方可能与数据有关.

在 if 中,你真的应该使用 count($csv_empty)>0 而不是 empty。