为什么访问数组元素会在 PHP 中抛出数组作为字符串错误?

Why does accessing an array element throw an array-as-string error in PHP?

我进行了一些搜索,但没有找到能够完全回答我的问题的帖子。 为了论证,我使用以下代码生成了一个 PHP 数组:

$i = 5;
for($i = 0; $i < $j; $i++) {
   $multiArray[0][$i] = $i;
   $multiArray[1][$i] = $i;
}

当我尝试访问它时:

for($i = 0; $i < $j; $i++) {
   echo "$multiArray[0][$i]";
   echo "$multiArray[1][$i]";
}

我得到:

Notice: Array to string conversion on line 3

Notice: Array to string conversion on line 4

...x4

当我用 printf("%d", $multiArray[0][$i]) 替换 echo 时,打印正常。为什么我必须明确告诉 PHP 我正在请求一个 int,而我正在访问的元素显然是一个 int(并且 PHP 通过 var_dump() 知道)?我不是在访问数组,而是在 数组中 的一个元素。

谢谢

Simple double quoted variable interpolation 最多支持 一个 嵌套元素。换句话说,"foo[0][1]" 被解释为 "{$foo[0]}[1]"。这意味着它会尝试将数组 $foo[0] 解释为一个字符串,然后将其插入到字符串中。

但是在这里使用引号是完全没有意义的。你不要字符串插值,你只想输出一个变量值:

echo $multiArray[0][$i];

试试这个:

for($i = 0; $i < $j; $i++) {
 echo $multiArray[0][$i]; 
 echo $multiArray[1][$i]; 
}

您的代码正在解析字符串而不是数组,请尝试在数组被视为字符串后删除 quotes.The [] 括号而不是 paremeter.Use 下面的代码

<?php
$j = 5;
for($i = 0; $i < $j; $i++) {
   $multiArray[0][$i] = $i;
   $multiArray[1][$i] = $i;
}

for($i = 0; $i < $j; $i++) {

   echo $multiArray[1][$i];
}

希望对您有所帮助