【PHPエラー】Fatal error: Uncaught TypeError: array_push()の原因と解決方法
PHPでプログラミングをしていると予期せぬプログラムエラーが表示されることがあります。Fatal error: Uncaught TypeError: array_push()...
もそのうちの1つです。
この記事では、Fatal error: Uncaught TypeError: array_push()...
が起こる状況と解決方法をご紹介したいと思います。
この記事の目次を表示
Fatal error: Uncaught TypeError: array_push()が発生する原因
まずは実際にFatal error: Uncaught TypeError: array_push()...
がどんなふうにエラー文章が表示されるか見てみましょう。
Fatal error: Uncaught TypeError: array_push(): Argument #1 ($array) must be of type array, null given in ●●●:■■■ Stack trace: #0 ●●●(■■■): array_push(NULL, 'XXX') #1 {main} thrown in ●●● on line ■■■
このようなエラー文章が表示されます。
このプログラムエラーはarray_push()
関数を使った時にだけ発生します。
このエラー文章からは以下のようなことがわかります。
- ●●●:プログラムエラーの原因のファイル名のパス
- ■■■:定義されていない配列にarray_push()しようとしている行数
上の場合は、エラー文章の途中にnull
と書かれています。
つまり、このプログラムエラーは「●●●あるファイルの■■■行目で定義されていない配列にarray_push()関数を使っている」ため発生します。
array_push($data, 'XXX');
上のようなコードの場合、Fatal error: Uncaught TypeError: array_push()...
が表示します。
array_push()
関数は配列に値を追記するために使用するPHP関数です。
そのため、このプログラムエラーは変数に対してarray_push()
関数を使った場合も発生します。
文字列が格納されている変数の場合、
$data = "XXX";
array_push($data, 'YYY');
以下のようなエラー文章が表示されます。
Fatal error: Uncaught TypeError: array_push(): Argument #1 ($array) must be of type array, string given in ●●●:■■■ Stack trace: #0 ●●●(■■■): array_push('XXX', 'YYY') #1 {main} thrown in ●●● on line ■■■
また、数値が格納されている変数の場合、
$data = 123;
array_push($data, 'XXX');
以下のようなエラー文章が表示されます。
Fatal error: Uncaught TypeError: array_push(): Argument #1 ($array) must be of type array, int given in ●●●:■■■ Stack trace: #0 ●●●(■■■): array_push(123, 'YYY') #1 {main} thrown in ●●● on line ■■■
Fatal error: Uncaught TypeError: array_push()の解決方法
Fatal error: Uncaught TypeError: array_push()...
が発生した場合は、array_push()
関数を使う前に配列を定義するようにします。
また、変数に対してarray_push()
関数を使わないように注意します。
$data = []; // 配列を定義
array_push($data, 'XXX');
// var_dump($data);
// array(1) { [0]=> string(3) "XXX" }
まとめ
いかがでしたか?
このプログラムエラーは変数なのか、配列なのかしっかり把握することで防ぐことが出来るエラーですね。