致命错误:未捕获错误:无法使用标量作为数组警告


Fatal error: Uncaught Error: Cannot use a scalar as an array warning

我有以下代码:

 $final = [1 => 2];
 $id = 1;
 $final[$id][0] = 3;

代码似乎工作正常,但我收到以下警告:

警告:不能将标量值用作第 X 行中的数组(行距:$final[$id][0] = 3)。

谁能告诉我如何解决这个问题?

在向数组添加元素之前,您需要将$final[$id]设置为数组。用任一方式进行渗透

$final[$id] = array();
$final[$id][0] = 3;
$final[$id]['link'] = "/".$row['permalink'];
$final[$id]['title'] = $row['title'];

$final[$id] = array(0 => 3);
$final[$id]['link'] = "/".$row['permalink'];
$final[$id]['title'] = $row['title'];

原因是因为你首先在某个地方用普通整数或字符串声明了你的变量,然后你试图把它变成一个数组。

我看到的另一个问题是,当嵌套数组时,这往往会引发警告,请考虑以下几点:

$data = [
"rs" => null
]

当像这样使用时,上面绝对可以正常工作:

$data["rs"] =  5;

但下面会抛出警告::

$data = [
    "rs" => [
       "rs1" => null;
       ]
    ]
..
$data[rs][rs1] = 2; // this will throw the warning unless assigned to an array

还要确保不要将其声明为数组,然后尝试为数组分配其他内容,如字符串、浮点数、整数。 我有这个问题。 如果你做一些输出的回显,我第一次看到我想要的东西,但在再次传递相同的代码后没有。