PHP中的"贪婪令牌解析"

Dee*_*pak 3 php codeigniter

什么是PHP中的"贪婪令牌解析"?我在Codeigniter指南中找到了这个:

"除非你需要解析变量,否则总是使用单引号字符串,并且在你需要解析变量的情况下,使用大括号来防止贪婪的令牌解析."

"我的字符串{$ foo}"

有良好解释的答案会有所帮助.

谢谢 !!

Nie*_*sol 6

贪心令牌解析指的是这样的:

$fruit = "apple";
$amount = 3;
$string = "I have $amount $fruits";
Run Code Online (Sandbox Code Playgroud)

可能的预期产量:"我有3个苹果"
实际输出:"我有3个"

当然,这是一个初学者的错误,但即使专家有时会犯错!

就个人而言,我不喜欢插入变量,大括号或不是.我觉得我的代码更像是这样的:

$string = "I have ".$amount." ".$fruit."s";
Run Code Online (Sandbox Code Playgroud)

请注意,代码编辑器可以更轻松地对此行进行颜色编码,如Notepad ++中所示:

截图

然后,有些人可能更喜欢让引擎进行插值:

$string = sprintf("I have %d %ss",$amount,$fruit);
Run Code Online (Sandbox Code Playgroud)

这完全取决于个人偏好,但你引用的指南中提出的观点是要小心你所写的内容.