为什么这个php程序会收到错误Undefined variabl

时间:2015-08-14 16:40:16

标签: php

   <?php

$find = 'is';
$length = strlen($find);
$string = 'This is a string and is an example';


while($string_position = strpos($string,$find,$offset))
{
echo '<strong>'.$find. '</strong>'. ' found at '.$string_position.'<br>';
$offset = $string_position + $length;
 }

?>

错误消息

  

未定义的变量:第10行的C:\ xampp \ htdocs \ series \ 48StringPosition.php中的偏移量

偏移量由$ sign定义为什么我收到此错误

6 个答案:

答案 0 :(得分:4)

您尝试在while循环条件中使用$offset而不首先初始化它。您应该在while循环之前添加此$offset = 0;

答案 1 :(得分:1)

PHP无法计时旅行:

while($string_position = strpos($string,$find,$offset))
                                              ^^^^^^^---using variable here

$offset = $string_position + $length;
^^^^^^---defined here, later on

答案 2 :(得分:0)

我认为你对如何设置变量感到困惑

while($string_position = strpos($string,$find,$offset))

在这种情况下$offset不是定义,它是一个参考。您告诉strpos()使用$offset中的数据作为参数。定义看起来像这样

$offset = 1;

请注意=的使用。这就是变量的定义方式

答案 3 :(得分:0)

我认为这就是你想要的:

<?php
$find = 'is';
$length = strlen($find);
$string = 'This is a string and is an example';
$offset = 0; // Define offset to the first position of the string

while($string_position = strpos($string,$find,$offset))
{
    echo '<strong>'.$find. '</strong>'. ' found at '.$string_position.'<br>';
    $offset = $string_position + $length;
}
?>

答案 4 :(得分:0)

您正在使用strpos($string,$find,$offset)而未声明$ offset。你应该在while循环之前初始化它。例如$offset = ''

答案 5 :(得分:-1)

您可以将可选偏移量传递给strpos。但是,需要来定义。变量$offset不在strpos的调用点。

通常,对于所有&#34;未定义变量&#34;错误,尝试在变量实际&#34;声明&#34;之前读取变量的。在你的这个循环中也是如此。它已传递给strpos,但稍后会在循环体内定义。

$a = 5;
$sum = $a + $b;
//          ^
//          +---- This also is a read attempt of an undefined variable