このページについて
このページではphpで使えるarray_unshiftの機能と使い方の解説をしています。
array_unshift
array_unshiftは配列関数です。指定した配列に対して1つ以上の要素を加える機能を持っています。array_pushも同じ機能を持ちますが、両者の違う点は配列のどこに要素を追加するかという点です。まずはarray_unshiftの基本的な書き方から。
array_unshift(配列,要素);
配列のところには「要素を追加したい配列」を指定します。追加したい要素は複数でも単一でも使えます。要素で連想配列みたいなキーと値の組み合わせを利用する場合、別の変数にあらかじめ代入してから使います。そうしないとエラーが出てしまいます。
$a = [1,2,3];
$b = [0=>0];
array_unshift($a,$b); //OK
このように書くとエラーは出ません。結果を見る場合はvar_dump関数を使いましょう。
戻り値
array_unshiftは戻り値としてintを返します。なのでecho array_unshiftとすると操作した後の配列の中身の数を数えて出力してくれます。ただこれを行う場合はcount関数があるので数を数える目的では使わずに配列操作として割り切った使い方をしましょう。count関数なら再帰的に配列をカウントすることができるので、より細かく正確に数えることができます。
配列同士を合体させたい場合
配列同士を合体させたい場合、array_merge関数を使いましょう。ユーザー定義で関数を作ってarray_unshiftで次々に挿入することもできなくはないですが、元々用意されている関数を使う方が手っ取り早いです。
ちなみに関数関係なしにarray_unshiftで配列と配列を指定した場合は配列ではなくint型になってしまいます。なので連想配列みたいにキーと値を追加するなら使えますが、それ以外では使えないことに注意しましょう。
参考までに配列の順序関係なしに追加していく関数のサンプルはこちら
$a=[1,2,3];
$b=[4,5,6];
function test($arrayA,$arrayB) {
for ($i=0,$c=count($arrayB);$i<$c;$i++){
array_unshift($arrayA,$arrayB[$i]);
}
return $arrayA;
}
このように書き、関数呼び出しの時にarrayAとarrayBの両方に配列を指定します。この書き方だとBの要素をAに入れていくことになっています。ただunshiftの挙動を考えればわかりますが、追加する順序としては4→5→6なんです。なので結果的にarrayAの中身は[6,5,4,1,2,3]という順序になります。
これを各配列の順序通りに追加したい場合、配列の後方から要素を追加していくarray_pushに変えるかarray_reverse関数を使って配列の中身を丸ごと逆転する必要があります。
添字の扱い
配列に対して要素を追加した後、全ての添字はリセットされて新たに付与されます。ただしキーは変更されません。操作後の配列から値を取り出したりする場合は注意しましょう。
まとめ
array_unshiftは配列に対して要素を追加することができる関数です。ただし追加位置は配列の前方なので、後方に追加するarray_pushとは使い分けが必要です。順序とか気にしないならどちらでも構いません。
- phpの基礎
- phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
- echoとprint
- 画面に文字を出力する2種類の言語構造の使い方
- 変数
- phpで使える変数の扱い方などを解説しています。
- 変数のスコープ(有効範囲)
- 変数のスコープについての解説です。
- var_dump
- 変数の情報を見ることができる関数
- print_r
- 変数の情報をわかりやすい形式で表示する関数
- 配列と連想配列
- 配列と連想配列の書き方と、便利な関数の解説など。
- key
- 連想配列のキーを返してくれます。内部ポインタ関係あり。
- count
- 配列や連想配列の要素数を数えてくれる関数の使い方解説。
- ソート関数
- 配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
- array_reverse
- 配列の中身の順番を反転させる関数です。
- array_chunk
- 配列を指定した数で分割させるarray_chunk関数の使い方解説です。
- array_combine
- 2つの配列を足して1つの連想配列にする関数です。
- array_diff
- 2つの配列を比較して、存在しない値を出力する関数
- array_push
- 配列に対して後方に要素を追加する関数
- array_unshift
- 配列に対して先頭に要素を追加する関数。
- array_shift
- 配列の先頭の要素を取り出す関数。
- array_merge
- 複数の配列を統合して1次元の配列にする関数
- array_intersect
- 2つの配列を比較して、両方に共通するものを出力する関数
- include
- includeを使って別のphpファイルを読み込む方法の解説。
- if文
- if文を使って処理を変更させる方法の解説。
- switch文
- switch文を使って複数の処理分岐を行わせたい時に使います。
- forループ
- forループを使って同じ処理を行わせる方法の解説です。
- whileループ
- whileループを使って同じ処理を行わせる方法の解説と注意点。
- do-whileループ
- do-whileループを使って同じ処理を行わせる方法の解説です。
- foreachループ
- foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
- continue
- ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
- ループのネスト構造(入れ子)
- ループの中にループを入れる書き方や考え方の解説。
- function
- functionを使って自作の関数を作成・使用する方法の解説。
- 引数の種類と書き方解説
- functionで扱う引数の種類と書き方を解説
- return
- returnの使い方と関数での使い方解説。
- class
- classを作成して変数と関数を1つにまとめる方法と使い方の解説。
- constructとdestruct
- classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
- インターフェイス
- インターフェイスという用語の解説と、実際の使い方解説
- トレイト
- コードを再利用するのに便利なトレイトの解説です。
- 列挙型
- プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
- PDOを使ってMySQLへ接続
- PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
- データの加工と表示
- PDOでデータベースから取得したデータを加工して表示する方法の解説です。
- HTMLフォームのデータ受け取りと表示
- HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。