我不明白为什么这段代码会给php 5.4发出警告?我该如何解决这个问题?
function load()
{
for ($i = 0, $n = sizeof($messages); $i < $n; $i++)
{
$this->add($messages[$i]['field'], $messages[$i]['type']);
}
}
function add($field, $type)
{
$this->messages[] = array('field' => $field, 'type' => $type);
}
答案 0 :(得分:2)
for ($i = 0, $n = sizeof($messages); $i < $n; $i++) { ... }
$this->add($messages[$i]['field'], $messages[$i]['type']);
$messages
在当前范围内不存在。相反,您应该使用$this->messages
(可能已声明为属性)。
答案 1 :(得分:0)
要记住的一件事是,如果你的数组要有正确的索引,那么它将以0开头作为最有可能的第一个元素。而sizeof给出了元素的数量。 例如。数组中的元素10将具有索引[9]。要解决这个问题,你可以为这个限制做负1:
for ($i = 0, $n = sizeof($messages) - 1; $i < $n; $i++){ ... }
也就是说,Unixarmy的解决方案更好,但绝对要记住这一点。否则,每次最后一个元素都会得到至少1个错误