Php 将字符串强制转换为数组时允许的行为
我在采访中被问到这个问题,为什么这段代码有效并输出12245Php 将字符串强制转换为数组时允许的行为,php,Php,我在采访中被问到这个问题,为什么这段代码有效并输出12245 $a = '12345'; $a[$a[1]] = '2'; echo $a; // 12245 到目前为止,我自己一直在试图理解这一点,但仍然没有运气 既然$a是一个字符串,并且没有声明为数组,那么$a怎么可能有索引=1?而该索引正被另一个不存在的索引所取代!有人能解释一下吗?使用[]可以像访问数组一样访问PHP字符串。本例中的“索引”是字符串的字符。没有演员阵容 文件: 因此,$a='12345',意思是$a[1]是'2'。
$a = '12345';
$a[$a[1]] = '2';
echo $a; // 12245
到目前为止,我自己一直在试图理解这一点,但仍然没有运气
既然
$a
是一个字符串,并且没有声明为数组,那么$a
怎么可能有索引=1
?而该索引正被另一个不存在的索引所取代!有人能解释一下吗?使用[]
可以像访问数组一样访问PHP字符串。本例中的“索引”是字符串的字符。没有演员阵容
文件:
因此,$a='12345'
,意思是$a[1]
是'2'
。因此,执行$a[$a[1]]
就像执行$a['2']
(字符串'2'
通过PHP转换为int)
发生的情况是索引
2
处的字符(第三个字符)被替换为2
。因此,创建'12245'
作为字符串可以像数组一样引用,然后:
$a[1]是“2”//从零开始
$a[$a[1]]
是$a[2]
当前为3
//仍然从零开始
$a[2]
设置为2
可以准确地给出12245
不能使用
echo
打印数组。字符串可以像数组一样引用。“索引”是字符。这听起来不像是问题的答案me@bad_boy:这正是答案。见: