为什么美元符号不出现在双引号PHP字符串中?

时间:2017-01-05 08:32:11

标签: php explode

我正在运行getLonLat

中的一些简单代码

输入

$str  = "$Q$14";
$arr = explode("$", $str);

print_r($arr);

输出

Array ( [0] => [1] => 14 )

我的问题是为什么索引0处的数组为空,不应该是字母Q?

请查看照片TraCIDemo11p.cc, line 34

2 个答案:

答案 0 :(得分:2)

主要问题是选择双引号字符串类型:

$Q = '$Q';
print_r(explode('$', "$Q$14"));
  

数组([0] => [1] => Q [2] => 14)

所以代码中发生的是"double quoted"字符串将有效变量名称替换为它们的值,其中$Q是有效名称,$14不是因为他们可能不是以数字开头。

echo "$Q$14";
  

注意:未定义的变量:Q in ... on ... ...   $ 14

因此,您实际连接null . '$14'因为您的代码中不存在变量$Q且该值为null所以最终值为:{ {1}}

如果您使用$14字符串,它会按预期工作:

'literal'
  

$ Q $ 14

另一件事是echo '$Q$14'; 将字符串拆分为找到的第一个分隔符中的 2 个,所以你将有 right 部分。找到的任何传统分隔符只会导致附加1个索引。字符串以分隔符开头,因此第一个数组索引应该是explode(),因为第一个字符的左边没有值。

null
  

数组([0] =>左[1] =>右)
  数组([0] =>左[1] =>中[2] =>右)
  数组([0] => [1] => Q [2] => 14)

答案 1 :(得分:0)

如果你真的想用你指定的相同字符串实现所需的输出,那么试试这个,在第一个$

之前添加反斜杠(\)
$str = "\$Q$14"; 
$arr = explode("$", $str);

print_r($arr);

我尝试了它并且有效。