我不明白为什么这个代码给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);
}
for ($i = 0, $n = sizeof($messages); $i < $n; $i++) { ... }
$this->add($messages[$i]['field'], $messages[$i]['type']);
$messages
在当前作用域中不存在。相反,您应该使用$this->messages
(可能已声明为属性)。
要记住的一件事是,如果您的数组具有正确的索引,那么最可能从0开始作为第一个元素。而sizeof给出了元素的数量。例如,数组中的元素10的索引为[9]。为了解决这个问题,你可以像这样对极限做- 1:
for ($i = 0, $n = sizeof($messages) - 1; $i < $n; $i++){ ... }
也就是说,Unixarmy的解决方案更好,但这绝对是要记住的事情。否则每次对于最后一个元素都会得到至少1个错误