PHPのエラー “Cannot use a scalar value as an array” 何がおかしい?

こんにちは、さるまりんです。

PHPのプログラムを書いていて、こんなエラーが出ました。

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

メッセージの内容としては「スカラー値を配列として使えません」です。

こんなプログラムです。

$colors = ['red', 'gree', 'blue'];
$hex = ['#ff0000', '#00ff00', '#0000ff'];

for ($i = 0; $i < count($colors); $i++) {
    $var[] = [
        'color' => $colors[$i],
        'hex' => $hex[$i],
    ];
}

エラーはこの部分です。

    $var[] = [..略..];

変数$varに配列の要素として設定しようとしてエラーのようです。

よくコードを見てみたら上の方に

$var = $total * $rate;

ってコードがありました。

一度、数値で初期化してしまっていたんですね。。
数値はスカラー値です。(スカラー値についてはこちらを参考にしてもらえると嬉しいです。)
それを配列として使うことはできないんですね。

なので、forループの前で

unset($var);
$var = [];

こんな感じに、一度$varを破棄、再度配列として初期化することでエラーが出なくなります。

さらに下で再度、スカラー値としての$varを使っていたらまた問題になります。
$varをさらに後で使っている場合、forループの前で配列のための別変数を

$arr = [];

と用意して、

設定する部分を

$arr[] = [..略..];

とするとエラーにはなりません。

$var$arrという変数名もあまりいいとは言えないかな。ぱっと見て意味のわかる名前をつけたいです。

エラーは慌ててしまいます。でも失敗して何が起きてるのかわかると勉強になります。
今後のプログラミングが少しでも改善してくれるように頑張ります。

読んでくれてありがとうございました。

それではまた!