为什么这个数组中存在未定义的偏移量?

时间:2014-04-17 17:47:23

标签: php arrays offset

我想将一些数据存储在名为$temp的数组中,但是我得到一个错误,即存在未定义的偏移量。这是我的代码:

$temp    = array();
$terms   = $this->DocumentTerms();
$temp[0] = $terms[0][0];

for ($i = 0; $i < sizeof($terms); $i++) {

    $flag = true;

    for ($j = 0; $j < sizeof($terms[$i]); $j++) {

        for ($k = 0; $k < sizeof($temp) || $k < sizeof($terms[$i]); $k++) {

            if ($temp[$k] == $terms[$i][$j]) {

                $flag = false;
                break;
            }
        }

        if ($flag)
            array_push($temp, $terms[$i][$j]);
    }
}

未定义的偏移位于此部分:

if($temp[$k] == $terms[$i][$j])

1 个答案:

答案 0 :(得分:3)

此条件:

$temp[$k] == $terms[$i][$j]

应该是:

isset($temp[$k]) && $temp[$k] == $terms[$i][$j]

在第二个循环结束之前,您不会将任何数据推送到$temp,但是您尝试在此条件中访问数组的$k索引。如果尚未设置,则会失败。检查以确保它已设置,然后继续查看它是否等于$terms[$i][$j]