不能将标量值用作数组

Posted

技术标签:

【中文标题】不能将标量值用作数组【英文标题】:Cannot use a scalar value as an array 【发布时间】:2011-12-02 15:59:12 【问题描述】:

我正在尝试这段代码:

for ($x = 0; $x < $numCol; $x++) 
    for ($i = 0; $i < $numRows; $i++) 
        $arr.$x[] = $todas[$i][$x]."\n"; //problem here
    


echo $arr0[0];
echo $arr1[0];
...

但我知道warning: Cannot use a scalar value as an array

而回声什么也不做。为什么 ?什么是解决方案?

【问题讨论】:

【参考方案1】:

这就是你认为你想做的事。将您的 //problem here 行替换为:

$'arr' . $x[] = $todas[$x][$i]."\n";

但我强烈建议不要这样做。只需使用您的二维数组即可。

【讨论】:

【参考方案2】:

我想你的意思是:$'arr'.$x[] 而不是 $arr.$x[]

 $arr.$x[]

将 $arr 和 $x 的字符串表示形式连接在一起,因此您最终会得到类似 'Array0'[] = ... 而不是 $arr0[] 的内容

【讨论】:

【参考方案3】:

当你写$arr.$x[]时,它等于$arr[$x][]

尝试用

替换你的回声
echo $arr[0][0];
echo $arr[1][0];

【讨论】:

以上是关于不能将标量值用作数组的主要内容,如果未能解决你的问题,请参考以下文章

每次回顾,总会有一点小收获!

“变量不能用作常量”c ++数组[重复]

如何修复错误:不能将字符串偏移量用作数组

PHP错误:不能将stdClass类型的对象用作数组(数组和对象问题)[重复]

Golang 不能用作类型结构数组或切片文字

“不能将 Laminas\Diactoros\UploadedFile 类型的对象用作数组”在 Cakephp 4 中具有多上传输入