在数组内分配值

Lor*_*Jr. 0 php

谁可以给我解释一下这个:

$a = array( $b1 = "b1", $b2 = "b2", array($b3 = "b3", $b4 = "b4"));

echo $$$$$a[2][1];
Run Code Online (Sandbox Code Playgroud)

为什么合法?输出仍然是"B4",甚至呼应$a[2][1],$$a[2][1],$$$[2][1]等等.

我期望它是否会在回显时寻找变量"b4",$a[2][1]但它仍然会回显字符串"b4".

谢谢

CBu*_*Bus 6

基本上这里发生的是你在将$ b*变量添加到数组时声明它们.您上面的代码相当于

Array("b1","b2", Array("b3", "b4"));
Run Code Online (Sandbox Code Playgroud)

反过来相当于

Array(0 => "b1", 1 => "b2", 2 => Array(0 => "b3", 1 => "b4"));
Run Code Online (Sandbox Code Playgroud)

第二个数组实际上包括Php默认添加的数组索引,其中未定义索引.

当你输入

Array($b1 = "b1");
Run Code Online (Sandbox Code Playgroud)

$b1 = "b1" 
Run Code Online (Sandbox Code Playgroud)

在插入数组之前被评估为"b1".


Roc*_*mat 6

$a = array( $b1 = "b1", $b2 = "b2", array($b3 = "b3", $b4 = "b4"));
Run Code Online (Sandbox Code Playgroud)

在您的阵列中,您没有设置任何键.您正在值设定为变量$b1,$b2,$b3,和$b4,然后在(数字)阵列使用这些值.

所以,$b4 = "b4".这将设置$b4为字符串"b4",然后将其添加到数组中.

$a[2][1]是字符串"b4",$$a[2][1]其值$b4"b4",$$$a[2][1]也是"b4",等等.