为什么访问数组元素会在 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];
}
希望对您有所帮助
我进行了一些搜索,但没有找到能够完全回答我的问题的帖子。 为了论证,我使用以下代码生成了一个 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];
}
希望对您有所帮助