配列のビルトイン関数
配列のビルトイン関数はたくさん用意されています。これらを覚えるのは大変なので、ネットや書籍で効率よく調べられるようにしましょう。
PHP公式:配列関数リファレンス
https://www.php.net/manual/ja/ref.array.php
配列のチェックと個数
is_array()
is_array() は配列かどうかを論理型(boolean)で判別します。
is_array(配列)
「$drinks」が配列か判別してみましょう。
<h2>配列チェック</h2>
<?php if (is_array($drinks)) : ?>
<p>配列です</p>
<?php endif ?>
count()
count() で配列の データの長さ(個数) を取得します。
count(配列);
「drinks」の個数を表示してみましょう。
<h2>個数</h2>
<p><?= count($drinks) ?>個</p>
結果
個数
4個
配列のデータ検索
in_array()
in_array() は配列に指定値が入っているか判別します。
in_array(値, 配列)
配列からから「コーヒー」を検索します。
<?php
$search_item = "コーヒー";
?>
<h2>商品チェック</h2>
<?php if (in_array($search_item, $drinks)) : ?>
<p><?= $search_item ?>が見つかりました。</p>
<?php endif ?>
array_search()
array_search() は指定値のインデックスを取得します。
array_search(値, 配列)
配列から「コーヒー」のインデックスを取得します。
<?php
...
$search_index = array_search($search_item, $drinks);
?>
<h2>商品チェック</h2>
<?php if (in_array($search_item, $drinks)) : ?>
<p><?= $search_item ?>が見つかりました。</p>
<p>インデックスは<?= $search_index ?>です。</p>
<?php endif ?>
結果
インデックスは2です。
配列の結合
array_merge()
array_merge() は配列を結合します。引数はいくつでも代入できます。
array array_merge(配列1, 配列2, ...)
「cities1」と「cities2」を結合して、「cities」に代入してHTMLで確認してみましょう。
<?php
$cities1 = ['東京', '神奈川', '千葉'];
$cities2 = ['大阪', '京都', '兵庫'];
$cities = array_merge($cities1, $cities2);
?>
<h2>都市</h2>
<p><?php var_dump($cities) ?></p>
結果
array(6) {
[0]=>
string(6) "東京"
[1]=>
string(9) "神奈川"
[2]=>
string(6) "千葉"
[3]=>
string(6) "大阪"
[4]=>
string(6) "京都"
[5]=>
string(6) "兵庫"
}
配列の並び替え
配列のデータを並び替えるのに sort(), rsort() などのビルトイン関数があります。
sort()
sort() は昇順に並び替えます。
sort(配列)
rsort()
rsort() は降順に並び替えます。
rsort(配列)
降順に並び替え
五十音順の「あ行」を並び替えてみましょう。
<?php
$kana = ['あ', 'い', 'う', 'え', 'お'];
rsort($kana);
?>
<h2>rsort()</h2>
<p><?php var_dump($kana) ?></p>
データ削除
NULL
「NULL」で配列の中のデータを削除できます。
配列[index] = null;
指定データをNULL
2番目のデータを「NULL」で更新します。
$drinks[1] = null;
結果
インデックスは残ったままデータが「NULL」になりました。
array(3) {
[0]=>
string(12) "コーヒー"
[1]=>
NULL
[2]=>
string(12) "ほうじ茶"
}
unset()
値を削除
unset() は値を削除するメソッドですが、配列ではインデックスのデータを削除し、インデックスを振り直しします。
unset(値);
配列の指定削除
2番目のデータを削除します。
unset($drinks[1]);
結果
2番目のデータがインデックスとともに削除されました。
array(2) {
[0]=>
string(12) "コーヒー"
[2]=>
string(12) "ほうじ茶"
}
インデックス欠番
配列のインデックスが欠番になると、プログラム言語によってはエラーになります。PHPではインデックスを欠番にすることができますが、予期せぬエラーになることも考慮してプログラミングしましょう。
演習
問題1
以下の配列の関数を調べて使ってみましょう。
array_pop()
array_shift()
array_unshift()
array_splice()
問題2
array_rand() を使って「グー」「チョキ」「パー」のジャンケンの手をHTMLで表示してみましょう。