使用字符串作为数组时出现PHP错误

时间:2015-09-08 05:35:34

标签: php curl

我将网站作为cURL响应,并将其传递给此函数。然后我通过字符串进行迭代,进行一些处理。它有效,但我收到了这个错误:

  

注意:未初始化的字符串偏移量:75817英寸   /var/www/html/wp-content/plugins/crg-daily/lib/CragslistRawDumpProcessor.class.php   第7行

以下是代码:

public function rollSausage($dump){
    $anchorArray = array();
    $dumpLength = strlen($dump);
    $skipToLetter = 1;
    while($skipToLetter < $dumpLength){
        $skipToLetter++;
        $letter = $dump[$skipToLetter];
        ...
    }
}

有什么想法吗?我认为这与提交的字符串类型有关。这是一个原始的cUrl响应。我正在抓一个网页。

2 个答案:

答案 0 :(得分:1)

使用后增加$skipToLetter(最好在while循环结束时)。你也可能从0开始,而不是1

 $skipToLetter = 0;
 while($skipToLetter < $dumpLength){
            $letter = $dump[$skipToLetter];
    ...
            $skipToLetter++;
            }
        }

原因如下:假设您有一个长度为4的字符串。这意味着字符串中的最后一个索引是3。您的索引最多为3.它在while循环(3<4)?中进行比较,答案为true。代码进入while循环并增加索引的值,该值将大于字符串的最后一个索引,从而导致警告。

答案 1 :(得分:1)

更新了您的代码......

public function rollSausage($dump){
    $anchorArray = array();
    $dumpLength = strlen($dump);
    $skipToLetter = 1;
    while($skipToLetter < $dumpLength){
        $skipToLetter++;
         if( siset( $dump[$skipToLetter]) )
            $letter = $dump[$skipToLetter];
...
        }
    }

}