PHP警告:非法字符串偏移'字段'

时间:2015-09-01 07:14:39

标签: php

我不明白为什么这段代码会给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);

        }

2 个答案:

答案 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个错误