我有一个非常快的问题:
我从Excel工作表中读取数据,并希望将其转换为关联数组。但有时在某些细胞中没有给出值。因此,如果发生这种情况,我想将数组的值设置为0。
现在我用三元运算符这样做,我很高兴我今天发现了:
(isset($excel->sheet[0]['cells'][$row][$value]) ? $excel->sheet[0]['cells'][$row][$value] : 0)
在这种情况下是否有缩短重复的意愿?它有效,但它不是那么漂亮:(
答案 0 :(得分:3)
虽然不推荐这样做,但我会采用以下方式(PHP 5.3):
(@$excel->sheet[0]['cells'][$row][$value] ? : 0);
错误抑制操作符很乱,但在这种情况下,您唯一要注意的是关于未定义变量的众所周知的通知。
另一个选项(如Álvaro G. Vicario所述)可以是int
的简单投射(NULL
投射到0
):
(int)@$excel->sheet[0]['cells'][$row][$value];
答案 1 :(得分:0)
另一种选择是制作一个函数来检查这种变量的存在 - 也许它有点过度工程,过度杀伤或者过多 - :
function iset($array, $output) {
$args = func_get_args();
$val = $array;
for ($i = 1; $i < count($args) - 1; $i++) {
if (!isset($val[func_get_arg($i)])) {
return func_get_arg(func_num_args() - 1);
}
$val = $val[func_get_arg($i)];
}
return $val;
}
然后使用这样的函数:
$var = iset($excel->sheet, 0, 'cells', $row, $value, "DEFAULT_VALUE");