gpt4 book ai didi

php - php 中 return 和 echo 的行为

转载 作者:可可西里 更新时间:2023-11-01 13:14:24 25 4
gpt4 key购买 nike

我对程序的运行方式感到困惑;代码应该打印 A, bB 但它显示的是 bA,B

class SampleClass {
public $a = "A";
protected $b = array ("a" => "A", "b" => "B", "c" => "C");

public function __get($v){
echo "$v";
return $this->b[$v];
}
}

$m = new SampleClass();

echo $m->a . ", " . $m->b;

最佳答案

这真的很有道理。让我们考虑一下执行顺序:

在 PHP 可以回显您请求的字符串之前,它必须先对其求值(即 $m->a . ", ". $m->b 部分)

所以此时,解析器尝试解析 $m->a 和 $m->b,它解析了第一个,但第二个失败了,所以我们转到魔术方法。

魔术方法回显某些东西(第一个 `b),然后将自身解析为 B。

现在,我们需要完成开始的工作(原始 echo)。

那么我们有什么?

  1. 解析$m->b(echo in b in the process).
  2. echo “A,B”

将它们结合在一起?

bA,B

关于php - php 中 return 和 echo 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com