当前位置:  开发笔记 > 编程语言 > 正文

双引号和单引号的字符串

如何解决《双引号和单引号的字符串》经验,为你挑选了1个好方法。

我有一个像这样的双引号字符串

$count = 5;
$str = "result: $count";
echo $str; //result: 5

变量解析工作得很好,我的问题是$ count var必须晚于$ str定义

$str = "result: $count";
$count = 5;
echo $str; //result:

因此,我将使用单引号并在此处提出一个问题,以便在需要时找到解析var的方法

$str = 'result: $count';
$count = 5;
//TODO: parse var process
echo $str; //result: 5

我不会使用正则表达式替换.



1> YenTheFirst..:

对于这种类型的东西,我可能会使用字符串格式.在PHP中,那就是printf.

?php
$str="result: %d"
....dostuff.....define $count.....
printf($str,$count)
?

编辑:虽然,最好的方法可能部分取决于为什么你必须在$ count之前定义$ string.

如果它是一个重复很多的字符串,并且你想把它放在一个全局变量或其他东西中,printf将是我的选择,或者将其放在函数中,就像其他答案所暗示的那样.

如果字符串仅使用一次或两次,您确定无法重构代码以使$ count在$ string之前定义吗?

最后,有点乏味的理论:当你写'$ string ="result:$ count"'时,PHP会立即获取$ count的值并将其放入字符串中.在那之后,为了$ string的目的,它不再担心$ count,即使$ count更改,$ string也不会,因为它包含值的文字副本.据我所知,没有一种方法可以将字符串中的位置绑定到尚未定义的变量.'printf'方法在字符串中留下占位符,当您决定占位符中的内容时,函数printf将替换为值.

所以,如果你只想写$ string ="result:$ count"$ count = 5 $ echo string

(而不必调用其他功能)

并得到"结果:5",没有办法做到这一点.最接近的方法是使用占位符和printf,但这需要显式调用函数,而不是隐式替换.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有