Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么美元符号不出现在双引号的PHP字符串中?_Php_Explode - Fatal编程技术网

为什么美元符号不出现在双引号的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之前加一个反斜杠,你们就可以开始了。