我读取了一些csv文件,并使用array_combine将内容映射到字段名称:
$csv = array();
$a = array('some fields');
$b = array_combine($a, $csv);
但是,如果$a中的字段名称与我在csv文件中指定的字段名称不同,则该方法将失败并显示警告
array_combine() [function.array-combine]:两者 参数应具有相等的数量 元素数量
我尝试使用尝试和捕获,但这不起作用。请注意,我正在使用 zend 框架。
任何想法如何捕捉警告?
获取 CSV 中的列数,然后将其与 $a
的长度进行比较。由于您没有指定,我将假设数组是一维的,其中包含 CSV 文件中的每一行。
if (count($csv) > 0 && count($a) == count(explode(',', $csv[0]))) {
// Valid
} else {
// Not valid
}
$b = @array_combine($a, $csv);
if (!$b) {
// error!
}
您不应该 (ab) 使用 @
运算符,但在这种情况下,它最能满足您的需求。
根据文档,如果任何一个数组为空或它们的长度不同,array_combine将返回 false。
所以你应该能够做这样的事情:
if($b = array_combine($a, $csv)) {
} else {
... the warning occurred ...
}