0

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 级吗?如果我将数组更改为单级,这会解决我的问题吗?

4

2 回答 2

1

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

$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

但是,如果我认为数组将falses 作为 items ,则 get 被过滤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

我认为您的问题可能与数据有关。

于 2013-10-24T00:41:18.543 回答
0

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

于 2013-10-24T00:23:08.747 回答