Php 未初始化的字符串偏移量

Php 未初始化的字符串偏移量,php,string,initialization,offset,notice,Php,String,Initialization,Offset,Notice,我正在用PHP编写自己的计算器 我的代码有一个问题,因为我不知道我在哪里试图读取字符串太远。所以如果有人能启发我 我得到的确切错误是: PHP注意:第76行的未初始化字符串偏移量:4 in/home/salim/Bureau/web/piscine_PHP/d01/ex11/do_op_2.PHP 代码如下: function decoupe ($argv) { global $nbr1; global $nbr2; global $sign; $string = NULL; $string =

我正在用PHP编写自己的计算器

我的代码有一个问题,因为我不知道我在哪里试图读取字符串太远。所以如果有人能启发我

我得到的确切错误是:

PHP注意:第76行的未初始化字符串偏移量:4 in/home/salim/Bureau/web/piscine_PHP/d01/ex11/do_op_2.PHP

代码如下:

function decoupe ($argv)
{
global $nbr1;
global $nbr2;
global $sign;
$string = NULL;
$string = trim($argv[1], " \t");
echo $string;
echo "\n";
$x = 0;
while($string[$x]) 
{
    if (is_numeric($string[0]) == false)
        error_msg();
    if (is_numeric($string[$x]) && $string[$x + 1])
    {
        while (is_numeric($string[$x]))
        {
            $nbr1 .= $string[$x];
            $x++;
        }
    }
    if (is_thisoperator(substr($string, $x)))
    {
        $sign .= $string[$x];
        $x++;
    }
    else
    {
        error_msg();
    }

    if ($string[$x + 1] && is_numeric($string[$x]))
    {
        while (is_numeric($string[$x]))
        {
            $nbr2 .= $string[$x];
            $x++;
        }
    }
    else
    {
        error_msg();
    }
}

不要使用
$string[$x]
作为测试
$x
是否为字符串中的有效索引的方法。当
$x
在字符串之外时,它会打印一条警告。改用
$x
。因此,改变:

while ($string[$x])

if($x+1
哪一行出现了错误?看起来是这样的:if($string[$x+1]&&is_numeric($string[$x])如果您想制作一个可用的算术计算器,而只需拔出最少的头发,你会想和友好相处的。非常感谢你的回答:)但我想知道C语言和PHP语言在这方面有什么不同,因为在C语言中,我就是这样编写代码的,直到知道我才真正遇到问题。在C语言中,字符串末尾有一个空字符,这就是那种类型的测试所需要的。PHP没有这个功能。
while ($x < strlen($string))
if ($string[$x + 1] && is_numeric($string[$x]))
if ($x + 1 < strlen($string) && is_numeric($string[$x]))