Catch数组合警告并打印自己的错误消息?

时间:2011-05-17 06:02:54

标签: php

我读了一些csv文件,并使用array_combine:

将内容映射到字段名称
$csv = array();
$a = array('some fields');
$b = array_combine($a, $csv);

但是,如果$ a中的字段名称与我在csv文件中指定的字段名称不同,则该方法将失败并显示警告

  

array_combine()   [function.array-combine]:两者   参数应该具有相同的数字   元素

我尝试使用try和catch但这不起作用。作为一个说明,我正在使用zend框架。

任何想法如何捕捉警告?

3 个答案:

答案 0 :(得分:2)

抓取CSV中的列数,然后将其与$a的长度进行比较。由于您没有指定,我将假设该数组与CSV文件中的每一行都是一维的。

if (count($csv) > 0 && count($a) == count(explode(',', $csv[0]))) {
    // Valid
} else {
    // Not valid
}

答案 1 :(得分:2)

$b = @array_combine($a, $csv);
if (!$b) {
    // error!
}

不应该(ab)使用@ operator,但在这种情况下,它最符合你的要求。

答案 2 :(得分:1)

根据docs,如果任一数组为空或者长度不同,则array_combine将返回false。

所以你应该能够做到这样的事情:

if($b = array_combine($a, $csv)) {

} else {
   ... the warning occurred ...
}