我正在运行getLonLat
输入
$str = "$Q$14";
$arr = explode("$", $str);
print_r($arr);
输出
Array ( [0] => [1] => 14 )
我的问题是为什么索引0处的数组为空,不应该是字母Q?
答案 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);
我尝试了它并且有效。