无法理解连接字符串PHP的解析

时间:2017-12-16 10:01:03

标签: php

我有以下代码:

$a="A";

$arr=array("a"=>"A","b"=>"B","c"=>"C");

function test($v){
    global $arr;
    echo "$v,";
    return $arr[$v];
}

echo $a.test('b').test('c');

我期待答案为Ab,Bc,C,但其输出为b,c,ABC

我从右到左,从左到右检查过它。但在这两种情况下,输出都不同于我的假设。

编辑:
看这里差异

echo $a.test('b').test('c'); //Output b,c,ABC
echo "<br/>";
echo $a,test('b'),test('c'); //Output Ab,Bc,C

1 个答案:

答案 0 :(得分:2)

这归因于instruction completion。代码在终止后使用符号;分号执行,在此示例中为

echo $a.",".test('b').",".test('c');

您正在调用test('b')函数执行首先运行此行echo "$v,";,因为它首先在行echo $a.",".test('b').",".test('c');之前终止,在echo "$v,";之后它返回$arr[$v]BC

调用函数后,它会运行此行echo $a.",".test('b').",".test('c');,即A,B,C;

enter image description here