13. 配列のビルトイン関数

配列のビルトイン関数

配列のビルトイン関数はたくさん用意されています。これらを覚えるのは大変なので、ネットや書籍で効率よく調べられるようにしましょう。

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で表示してみましょう。

PHP超入門