<?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定义为什么我收到此错误
答案 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