フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHPエラー】Warning: Array to string conversion inの解決方法

PHP
Warning: Array to string conversion in
エラー
トラブルシューティング
プログラミング

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

PHPでプログラムを作っていると突然表示されるエラー文章。突然エラーが表示されると焦ってしまいますよね。
今回の記事ではPHPエラーの中でもWarning: Array to string conversion inについて、原因から実際の具体例、その解決方法まで順を追って詳しく解説したいと思います。

Warning: Array to string conversion inとは

まずは実際にWarning: Array to string conversion inがどのように表示されるのか見てみましょう。
このエラーは以下の画像のように表示されます。

Warning: Array to string conversion in ●● on line ▲▲

このエラーが表示される原因は配列を文字列として扱い、処理を実行しようとした場合に発生するエラーです。

  • ●●・・・配列を文字列として扱おうとした「ディレクトリ名/ファイル名」
  • ▲▲・・・エラーの原因となる処理が書かれている行数

「●●ファイルの▲▲行目で配列が文字列として扱われているよ」ということを教えてくれています。

なお、PHPバージョンによっては、Warning: Array to string conversion inと表示されますが、どちらも同じエラー内容となります。

Warning: Array to string conversion inが起こる具体例

”文字列が配列として扱われている”と書きましたが、実際にどういうことなのか、実際にこのWarning: Array to string conversion inが発生するコードを交えてご紹介します。

【例1】配列をそのまま出力した場合

<?php

$data = ['a', 'b', 'c'];
echo $data;

?>

$dataは配列なのに、そのまま出力しようとするとWarning: Array to string conversion inが表示されます。

【例2】配列にそのまま値を追加した場合

<?php

$data = ['a', 'b', 'c'];
$data = $data . 'd';
var_dump( $data );

?>

$dataは配列なのに、文字列のように値を追加しようとするとWarning: Array to string conversion inが表示されます。

Warning: Array to string conversion inの解決方法

配列を文字列として扱ってしまった為、エラーが起こるとご紹介しました。そのため、配列として処理するようにコードを書き換えることでこのエラーは解消します。

上でご紹介した二つの例をエラーが発生しないようにするためには、以下のようにコードを書き換えます。

【例1】配列を出力したい場合

<?php

$data = ['a', 'b', 'c'];

foreach( (array)$data as $value ){
    echo $value;
}

?>

foreach文を使用することで、配列の値を出力することが出来ます。

【例2】配列に値を追加したい場合

<?php

$data = ['a', 'b', 'c'];

$data[3] = 'd';

var_dump( $data );

// 出力結果
// array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }

?>

キーを指定することで、配列に値を追加することが出来ます。

まとめ

いかがでしたか?
プログラミングをしていると、文字列だと思っていた変数が実は配列だったという勘違いは多々発生します。
そんな時は、エラー内容を確認し、配列として処理するようコードを書き換えてあげましょう。