繁体   English   中英

为什么在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]";
}

我得到:

注意:第3行中的数组到字符串的转换

注意:第4行中的数组到字符串的转换

... x4

当我用printf("%d", $multiArray[0][$i])代替echo ,它可以正常打印。 当要访问的元素显然是int时(为什么PHP可以通过var_dump()知道),为什么我必须明确地告诉PHP我要的是int? 我不访问数组,但数组的元素。

谢谢

简单的双引号变量插值最多支持一个嵌套元素。 换句话说, "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]; 
}

您的代码正在解析字符串而不是数组,请尝试删除引号。数组后的[]括号被视为字符串,而不是作为参数。使用以下代码

<?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];
}

希望这对您有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM