こんにちは、さるまりんです。
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
という変数名もあまりいいとは言えないかな。ぱっと見て意味のわかる名前をつけたいです。
エラーは慌ててしまいます。でも失敗して何が起きてるのかわかると勉強になります。
今後のプログラミングが少しでも改善してくれるように頑張ります。
読んでくれてありがとうございました。
それではまた!