Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中foreach循环中的变量_Php_Loops - Fatal编程技术网

PHP中foreach循环中的变量

PHP中foreach循环中的变量,php,loops,Php,Loops,我从来都不擅长使用循环。我有以下问题: 当我执行下面的代码时,我会收到以下错误消息:“解析错误:语法错误,XXXXXXXX第8行出现意外的T_变量”。我只想给数组中的每一个元素一个“评级”,看看值有多高 <? $input = array( 12413535, 13452465246, -13451, 8); $input_size = count($input); $var_rating = array (); foreach ($input as

我从来都不擅长使用循环。我有以下问题:

当我执行下面的代码时,我会收到以下错误消息:
“解析错误:语法错误,XXXXXXXX第8行出现意外的T_变量”
。我只想给数组中的每一个元素一个“评级”,看看值有多高

    <?
    $input = array( 12413535, 13452465246, -13451, 8);
    $input_size = count($input);
    $var_rating = array ();
    foreach ($input as $value) {
        $var_rating[$value] = 0;
        foreach ($input as $test) {
            if ($value > $test) {
                $var_rating[$value] = $var_rating[$value] + 1;
            }
            else {}
        }
    }

    var_dump($var_rating);
?>


很抱歉给你带来了困惑。我编辑了我的问题并添加了完整的代码。

代码不起作用的罪魁祸首似乎是第8行复制的隐藏字符,就在
$test
变量之前。删除“空格”和
符号,然后重新键入,这两种方法都可以解决我这边的问题

<?php
    $input = array( 12413535, 13452465246, -13451, 8);
    $input_size = count($input);
    $var_rating = array ();
    foreach ($input as $value) {
        $var_rating[$value] = 0;
        foreach ($input as $test) {
            if ($value > $test) {
                     // ^  right here there is a hidden character, remove it and the code works fine
                $var_rating[$value] = $var_rating[$value] + 1;
            }
            else {}
        }
    }

    var_dump($var_rating);
?>

您的代码不起作用的罪魁祸首似乎是第8行的一个复制的隐藏字符,就在
$test
变量之前。删除“空格”和
符号,然后重新键入,这两种方法都可以解决我这边的问题

<?php
    $input = array( 12413535, 13452465246, -13451, 8);
    $input_size = count($input);
    $var_rating = array ();
    foreach ($input as $value) {
        $var_rating[$value] = 0;
        foreach ($input as $test) {
            if ($value > $test) {
                     // ^  right here there is a hidden character, remove it and the code works fine
                $var_rating[$value] = $var_rating[$value] + 1;
            }
            else {}
        }
    }

    var_dump($var_rating);
?>

在第8行中,
$test
之间有一个不间断的空格,而不是通常的空格。 用一个常用的空格字符替换它,就可以了。
使用高级文本编辑器,如,它提供了查看不可打印字符而不是记事本的可能性:)

在第8行中,在
$test
之间有一个不间断的空格,而不是通常的空格。 用一个常用的空格字符替换它,就可以了。
使用高级文本编辑器,例如,它提供了查看不可打印字符而不是记事本的可能性:)

这只是为了更好地显示此错误的原因,我使用了

有隐藏的
字符:)


这只是为了更好地显示此错误的原因,我使用了

有隐藏的
字符:)



@Oswald:您也复制了点吗?我可以看出您代码的这一部分没有语法错误……是的。如果我没有,我就不会得到任何解析错误。@Jan Bayram:如果
$input
被初始化,您的代码实际上执行时没有错误@奥斯瓦尔德:你可能也复制了省略号)你确定这个错误所指的代码就是你发布的代码吗?@奥斯瓦尔德:你也复制了点吗?我可以看出你代码的这一部分没有语法错误……是的。如果我没有,我就不会得到任何解析错误。@Jan Bayram:如果
$input
被初始化,您的代码实际上执行时没有错误@奥斯瓦尔德:你可能也复制了省略号)你确定这个错误所指的代码就是你发布的代码吗?非常感谢!!!你救了我。顺便说一句我能做些什么来避免在我的代码中隐藏这些字符?”JayBayRAM首先,如果这解决了你的问题,请考虑通过点击向下箭头上勾画的勾选来接受它。其次,使用IDE或代码编辑器来突出显示这些内容。我用记事本++找到这个,因为当我选择行时,它列出了26个字符,而应该有25个。我就是这样知道它在哪里的。嗯,我在Mac电脑上用了尾波2。我该如何输入这些字符呢?@JanBayram通常是从另一个来源意外复制的,该来源使用特殊字符来帮助格式化。要么是这样,要么是你不小心键入了某个组合键。@Jan:例如,你可能是不小心复制了这个字符。顺便说一句,按照代达罗斯的建议,重新键入整行代码也可以解决这个问题:)非常感谢!!!你救了我。顺便说一句我能做些什么来避免在我的代码中隐藏这些字符?”JayBayRAM首先,如果这解决了你的问题,请考虑通过点击向下箭头上勾画的勾选来接受它。其次,使用IDE或代码编辑器来突出显示这些内容。我用记事本++找到这个,因为当我选择行时,它列出了26个字符,而应该有25个。我就是这样知道它在哪里的。嗯,我在Mac电脑上用了尾波2。我该如何输入这些字符呢?@JanBayram通常是从另一个来源意外复制的,该来源使用特殊字符来帮助格式化。要么是这样,要么是你不小心键入了某个组合键。@Jan:例如,你可能是不小心复制了这个字符。顺便说一下,按照代达罗斯的建议,重新键入整行代码也可以解决问题:)