基本上,如果我的数组为空,我正在运行一个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。