为什么美元符号不出现在双引号的PHP字符串中?
我正在从运行一些简单的代码 输入为什么美元符号不出现在双引号的PHP字符串中?,php,explode,Php,Explode,我正在从运行一些简单的代码 输入 $str = "$Q$14"; $arr = explode("$", $str); print_r($arr); Array ( [0] => [1] => 14 ) 输出 $str = "$Q$14"; $arr = explode("$", $str); print_r($arr); Array ( [0] => [1] => 14 ) 我的问题是为什么索引0处的数组是空的,这不应该是字母Q吗 请检查照片主要问题是双
$str = "$Q$14";
$arr = explode("$", $str);
print_r($arr);
Array ( [0] => [1] => 14 )
输出
$str = "$Q$14";
$arr = explode("$", $str);
print_r($arr);
Array ( [0] => [1] => 14 )
我的问题是为什么索引0处的数组是空的,这不应该是字母Q吗
请检查照片主要问题是双引号字符串类型的选择:
$Q = '$Q';
print_r(explode('$', "$Q$14"));
数组([0]=>[1]=>Q[2]=>14)
因此,代码中出现的是一个“双引号”
字符串将有效变量名替换为它们的值,其中$Q
是一个有效名称,$14
不是,因为它们可能不是以数字开头的
echo "$Q$14";
注意:未定义变量:Q in。。。在线…14美元
所以你实际上是在连接
null。”$14'
作为变量$Q
在代码中不存在,该值为null
,因此结束值为:$14
如果您要使用'literal'
字符串,它将按预期工作:
echo '$Q$14';
$Q$14
另一件事是
explode()
将字符串从找到的第一个分隔符拆分为两部分,因此将有一个左部分和一个右部分。找到的任何传统分隔符只会导致追加1个索引。字符串以分隔符开头,因此第一个数组索引应为null
,因为第一个字符的左侧不存在任何值
print_r(explode('.', 'left.right'));
print_r(explode('.', 'left.middle.right'));
print_r(explode('$', '$Q$14'));
数组([0]=>左[1]=>右)数组([0]=>左[1]=>中[2]=>右)
数组([0]=>[1]=>Q[2]=>14)
主要问题是双引号字符串类型的选择:
$Q = '$Q';
print_r(explode('$', "$Q$14"));
数组([0]=>[1]=>Q[2]=>14)
因此,代码中出现的是一个“双引号”
字符串将有效变量名替换为它们的值,其中$Q
是一个有效名称,$14
不是,因为它们可能不是以数字开头的
echo "$Q$14";
注意:未定义变量:Q in。。。在线…14美元
所以你实际上是在连接
null。”$14'
作为变量$Q
在代码中不存在,该值为null
,因此结束值为:$14
如果您要使用'literal'
字符串,它将按预期工作:
echo '$Q$14';
$Q$14
另一件事是
explode()
将字符串从找到的第一个分隔符拆分为两部分,因此将有一个左部分和一个右部分。找到的任何传统分隔符只会导致追加1个索引。字符串以分隔符开头,因此第一个数组索引应为null
,因为第一个字符的左侧不存在任何值
print_r(explode('.', 'left.right'));
print_r(explode('.', 'left.middle.right'));
print_r(explode('$', '$Q$14'));
数组([0]=>左[1]=>右)数组([0]=>左[1]=>中[2]=>右)
数组([0]=>[1]=>Q[2]=>14)
如果您确实希望使用指定的相同字符串获得所需的输出,请尝试使用此字符串,在第一个字符串之前添加反斜杠(\)$
$str = "\$Q$14";
$arr = explode("$", $str);
print_r($arr);
我试过了,它成功了。如果您真的想用指定的字符串获得所需的输出,那么试试这个,在第一个字符串之前添加反斜杠(\)$
$str = "\$Q$14";
$arr = explode("$", $str);
print_r($arr);
我试过了,它成功了。要实现这一点,您的字符串如下:
$str=“Q$14”$arr=爆炸(“$”,$str)代码>打印($arr)代码>否字符串与我所说的一样,因为我是从db获得它的,所以我不能更改字符串中字符的顺序。感谢您必须将双引号字符串“$Q$14”
替换为单引号字符串“$Q$14”
,PHP将停止尝试扩展变量$Q
,但由于您的字符串以$
开头,您将始终得到0作为NothingHanks@RiggsFolly,你是对的,我必须用单引号而不是双引号。谢谢大家,在第一个$dude之前加一个反斜杠就可以了。要实现这一点,字符串如下:$str=“Q$14”$arr=爆炸(“$”,$str)代码>打印($arr)代码>否字符串与我所说的一样,因为我是从db获得它的,所以我不能更改字符串中字符的顺序。感谢您必须将双引号字符串“$Q$14”
替换为单引号字符串“$Q$14”
,PHP将停止尝试扩展变量$Q
,但由于您的字符串以$
开头,您将始终得到0作为NothingHanks@RiggsFolly,你是对的,我必须用单引号而不是双引号。谢谢大家在第一个$dude之前加一个反斜杠,你们就可以开始了。