我已经做了一些搜索,但我找不到任何能够回答我问题的帖子。 为了参数起见,我使用以下代码生成了一个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
当我用echo
替换printf("%d", $multiArray[0][$i])
时,它打印正常。为什么我必须明确地告诉PHP,当我访问的元素显然是一个int(并且PHP通过var_dump()
知道它)时,我要求一个int?我没有访问数组,而是数组中的元素。
由于
答案 0 :(得分:2)
Simple double quoted variable interpolation最多支持一个嵌套元素。换句话说,"foo[0][1]"
被解释为"{$foo[0]}[1]"
。这意味着它尝试将数组$foo[0]
解释为该点的字符串,以将其插入到字符串中。
但在这里使用引号完全是荒谬的。你不想要字符串插值,你只想输出一个变量值:
echo $multiArray[0][$i];
答案 1 :(得分:0)
试试这个:
for($i = 0; $i < $j; $i++) {
echo $multiArray[0][$i];
echo $multiArray[1][$i];
}
答案 2 :(得分:0)
你的代码正在解析字符串而不是数组,尝试删除引号。数组之后的[]括号被认为是字符串而不是作为参数。使用下面的代码
<?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];
}
希望这有助于你