如何避免未定义的偏移错误?

时间:2013-06-30 12:07:41

标签: php

这是我脚本的一部分:

$one = 0;
$two = 0;
$three = 0;

$data = 'a-b-c';

$data = explode("-", $data);
$one = $data[0];
$two = $data[1];
$three = $data[2];

到目前为止没有问题,但 $ data 有时可能

$data = 'a-b-c';

有时候

$data = 'a-b';

如果是$data = 'a-b';我得到未定义偏移:3 错误。是否有某种方法可以避免这种错误?

5 个答案:

答案 0 :(得分:16)

将作业包装到if - 块:

if(isset($data[0])) {
    $one = $data[0];
}

...

现在检查此数组项是否已设置,如果不是,则只是不指定它,并且不会显示任何错误。

答案 1 :(得分:5)

假设至少有一个将永远存在

$data = 'a-b';

list($one, $two, $three) = explode("-", $data . '-0-0');

答案 2 :(得分:0)

您需要使用isset。 Isset检查变量是否存在。

// You can get rid of this since we set the default later if isset fail
/*
$one = 0;
$two = 0;
$three = 0;
*/

$data = 'a-b-c';

$data = explode('-', $data);
$one = (isset($data[0]) === TRUE ? $data[0] : 0);
$two = (isset($data[1]) === TRUE ? $data[1] : 0);
$three = (isset($data[2]) === TRUE ? $data[2] : 0);

答案 3 :(得分:0)

使用isset之类的isset($data[0] == true)

答案 4 :(得分:0)

我通常喜欢这样:

$a = array(1,2,3,4);
$current = 0;
$index = 0;
while(isset($a[$index])) {
    $current = $a[$index];
    //... do something ...
    $index++;
}

这有效!