この章では配列に関しての関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
配列に関しての関数とは配列の順番を変えたりする関数のことです。
では関数の基本について説明します。 PHPの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
引数とは関数内で使われるデータの事で、上の説明で言えば3,5,7の事です。
PHPには初めからこのように機能が定義されている関数が多数ありますので、この章では配列に関係する関数を取り上げたいと思います。 unshift関数は配列の1番上に要素を追加する関数です。 先頭に鹿を追加したので、では鹿が出力されます。
array_push関数は配列の1番下に要素を追加する関数です。と同じことはと書いても実現できます。
1番下に猿を追加したので、では猿が出力されます。
array_shift関数は配列の1番上から要素を削除します。 先頭から猫を削除したので、では犬が出力されます。
array_pop関数は配列の1番下から要素を削除する関数です。
末尾からネズミを削除します。
sort関数は配列の値を昇順つまり小さい値から大きい値に並び変える関数です。 sortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は 「1259」 です。
次の例をみてみましょう。 sortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は 「bgt」 です。
次の例をみてみましょう。 =>連想配列をsortすると、添え字が0から数値で振り直されてしまうので注意が必要です。
つまりが数値に変わってしまうということです。 配列のキーと値との関係を維持しつつ、配列をソートしたい場合は後ほど説明するasort関数とarsort関数を使います。 rsort関数は配列の値を降順つまり大きい値から小さい値に並び変える関数です。 rsortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は「9521」 です。 rsortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は「tgb」 です。 asort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、昇順に並び変えます。 arsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、降順に並び変えます。 ksort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、昇順に並び変えます。
krsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、降順に並び変えます。 array_slice関数は配列の指定した位置から要素を取得する関数です。
基本構文の中のは省略可能です。
TRUEを指定すると例え配列から要素を取り出してもキーと値の関係は崩れません。
[取り出す数]を指定しない場合は指定した位置から最後まで指定したことと同じことを意味します。
では例をみてみましょう。 この例では2つ目の要素である栄治から栄太までを切り取り、配列$name2に代入しています。
取り出し位置は0から数えているので、1の場合は2つ目の要素である栄治からになります。
結果は以下の通りです。
0=>栄治
1=>五郎
2=>栄太
次の例をみてみましょう。 開始位置がマイナス指定の場合は後ろから数えます。
この場合は「-2」なので後ろから2つ目から最後までになります。
取り出す個数を入力してないので、指定した位置から最後までになります。
つまり、終わりから2つ目の要素である五郎と栄太までを切り取り、$name2に代入しています。
結果は以下の通りです。
0=>五郎
1=>栄太
次の例をみてみましょう。 2つ目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
[取り出す数]を2に指定しているので2つ取り出しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。 後ろから3個目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。 [取り出す数]にマイナス値を指定すると「指定した箇所」から「マイナス値で指定した箇所から右の要素」を省いたデータを取得できます。
つまりこの例で説明しますと指定した開始位置は0なので太郎から始まって、栄太、こじを省いた残りすべてを$name2に代入します。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
次の例をみてみましょう。 この例のようにTRUEを指定すると取り出した要素が元の添え字のまま配列$name2に入れられます。
結果は以下の通りです。
1=>栄治
2=>五郎
次の例をみてみましょう。 array_sliceで要素を切り出しても元の配列の要素に影響しません。
の箇所で配列$name1から要素を切り出しても、配列$name1の要素が切り出される分だけなくなることはありません。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
3=>栄太
array_splice関数は配列から取り出しの開始位置や取り出す個数を指定して、取り除いた配列を返します。
では例をみてみましょう。 2番目の要素から2つ取り除いて$number2に代入しています。
ここでの注目点は配列の要素を取り除くことにより元の配列まで影響を受けるということです。
それに対してでは元の配列はそのままの状態のまま影響を受けません)。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
次のprintの出力は以下の通りです。
0=>PHP
1=>c++
次の例をみてみましょう。 のように取り出す数を省略すると指定した位置から最後まで取り除かれます。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
2=>c++
次のprintの出力は以下の通りです。
0=>PHP
次の例をみてみましょう。 array_spliceでは配列の一部分を削除し、新しい要素で置き替えることもできます。
2番目の要素からhtmlが取り除かれてRubyが挿入されています。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>Ruby
2=>Java
3=>c++
次の例をみてみましょう。 挿入する要素に配列も指定できます。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>word
2=>powerpoint
3=>Java
4=>c++
配列の値を1度に複数の変数に代入することができます。
では例をみてみましょう。 $aにはPHP、$bにはhtml、$cにはJava,$dにはc++が代入されます。
結果はになります。
次の例をみてみましょう。 連想配列の場合は前の例のようにしても、うまくいきません。
その場合はlist関数とeach関数の組み合わせを使います。
each を実行して配列のキーと値のペアを順番に返してで出力します。
つまり、以下のようにnameを$aに、大野を$bに代入しを出力します。
次に以下のようにaddressを$aに、東京都を$bに代入し
を出力します。
次に以下のように年齢を$aに、34を$bに代入しを出力します。
in_array関数は配列に指定した値があるか検索し、値が見つかった場合はTRUE、見つからなかった場合はFALSEを返す関数です。
以下にin_array関数の使用例を示します。
以下の例では検索値PHPは配列$arに存在するのでin_array関数はTRUEを返します。 結果はが出力されます。