PHP - 为什么我不能从多维数组的第二个元素访问数据/

时间:2013-03-08 14:05:13

标签: php arrays parsing syntax multidimensional-array

我找不到任何有用的示例或通过谷歌搜索在线帮助,解决方案应该很简单,但结果不是我所期待的。

我有3个数组 - 列出一些:

$A = array(1,0,1,1,1,0,1,1,1);
$B = array(1,1,1,0,1,0,1,0,1);
$C = array(1,1,1,0,1,0,1,1,1,0,1);

然后我想创建一个数组,其中元素[0] - [2]引用上面提到的3个数组中的每一个。声明是:

$LETTERS= array($A,$B,$C);

我正在尝试使用以下代码获取$A[x]的元素:

$LETTERS[0][0];

但问题是输出:Array[0]而不是1

如果我回显$A[0],则输出将按预期1

那么我做错了什么?我不认为保留字和& |有问题使用大写字母作为变量,有吗?

如何访问此二维数组中的数据?

提前感谢您的帮助。

<小时/> 修改
问题是我试图用这段代码回显输出:

echo "element [0][0]: $LETTERS[0][0]";

出于某种原因,这不会起作用。我需要保留除实际变量之外的所有内容。任何人都知道为什么会这样吗?

3 个答案:

答案 0 :(得分:3)

您需要重新检查您的代码。

echo $LETTERS[0][0];

输出1

编辑问题答案

echo "element [0][0]: {$LETTERS[0][0]}";

答案 1 :(得分:3)

在这里工作:

php > $A = array(1,0,1,1,1,0,1,1,1);                                        
php > $B = array(1,1,1,0,1,0,1,0,1);
php > $C = array(1,1,1,0,1,0,1,1,1,0,1);
php > $LETTERS= array($A,$B,$C);
php > echo $LETTERS[0][0];
1
好的,鉴于你的编辑... PHP的翻译并不贪心。将多维数组嵌入字符串时,它不会引入多个数组维度。 e.g

echo "$arr[0][0]"

被视为

echo "$arr[0]", "[0]"
      ^^^^--arrray
                 ^^^-random string

执行echo $array会强制数组进入字符串上下文,但PHP不会转储数组的内容,只会打印出Array,这就是Array[0]的原因。

要强制PHP查看整个数组引用,您需要使用{}表示法:

echo "{$arr[0][0]}";

将正确处理额外的数组维度。

顺便提一下,这对于字符串中的对象也很有用,例如

echo "$obj->attribute->attribute"

最好写成

echo "{$obj->attribute->attribute}"

答案 2 :(得分:1)

该代码正常运行。现场演示here

编辑:在您的版本之后,正确的方法是:

echo "element [0][0]: {$LETTERS[0][0]}";

这样PHP就可以正确扩展你的变量。