PHPのarray_is_list関数の使い方!配列か連想配列か確認する

PHPのarray_is_list関数について書いています。
array_is_list関数は、配列が「リスト」であるかどうかを判定します。この関数はPHP8.1以降で導入されました。

「リスト」は単純に文字列や数値などが並んでいるだけの配列です。
インデックスが数値であり、キーが順番に0, 1, 2, ...となっているものを指します。

array_is_list関数の基本的な使い方

array_is_list関数は、与えられた配列がリストであるかどうかをboolean値で返します。
基本的な構文は以下のとおりです。

array_is_list(array $array): bool
  • $array: 確認する配列。
    • 任意の型の値を要素とする配列を指定します。

array_is_list関数の戻り値

array_is_list関数の戻り値は、与えられた配列がリスト形式である場合はtrue
そうでない場合はfalseを返します。

リスト形式の配列を確認する

リスト形式かどうか、配列を判定してみます。

<?php
$listArray = ['apple', 'banana', 'orange'];
$isList = array_is_list($listArray);

if ($isList) {
    echo "この配列はリスト形式です。\n";
} else {
    echo "この配列はリスト形式ではありません。\n";
}
// 結果:この配列はリスト形式です。
?>

最初に文字列の配列を作成して、次の処理でarray_is_list関数を使っています。
今回の配列($listArray)はキーが0, 1, 2と連続しているため、リストと判定されてarray_is_list関数はtrueを返します。

結果「この配列はリスト形式です。」が出力されます。

連想配列を確認する

連想配列に対して、array_is_list関数を使ってみます。

<?php
$assocArray = ['a' => 'apple', 'b' => 'banana', 'c' => 'orange'];
$isList = array_is_list($assocArray);

if ($isList) {
    echo "この配列はリスト形式です。\n";
} else {
    echo "この配列はリスト形式ではありません。\n";
}
// 結果:この配列はリスト形式ではありません。
?>

連想配列($assocArray)をarray_is_list関数に渡すと
文字列のキーを持っているため、array_is_list関数はfalseを返します。

キーが連続していない数値添字配列を確認する

キーが連続していない数字インデックスの配列を使ってみます。

<?php
$nonConsecutiveArray = [0 => 'apple', 2 => 'banana', 3 => 'orange'];
$isList = array_is_list($nonConsecutiveArray);

if ($isList) {
    echo "この配列はリスト形式です。\n";
} else {
    echo "この配列はリスト形式ではありません。\n";
}
// 結果:この配列はリスト形式ではありません。
?>

配列($nonConsecutiveArray)はキーが0, 2, 3と連続していないため、array_is_list関数はfalseを返します。
この配列が「[0 => 'apple', 1 => 'banana', 2 => 'orange']」と連続した数字だった場合はtrueになります。

空の配列を確認する

空配列の場合にもtrueになるので、注意が必要です。

<?php
$emptyArray = [];
$isList = array_is_list($emptyArray);

if ($isList) {
    echo "この配列はリスト形式です。\n";
} else {
    echo "この配列はリスト形式ではありません。\n";
}
// 結果:この配列はリスト形式です。
?>

空の配列はキーが0から始まる連続した整数キーを持つとみなされるため、array_is_list関数はtrueを返します。

PHPのarray_is_list関数の使い方まとめ

今回はPHPのarray_is_list関数の使い方について解説しました。
この記事の内容をまとめます。

・`array_is_list(array $array): bool` で、配列が0から始まる連続した整数キーを持つリスト形式かどうかを確認する。
・リスト形式の場合は`true`、そうでない場合は`false`を返す。
・配列の形式に応じて処理を分岐させたい場合に便利。
・PHP8.1 以降で使用可能。
PHP

コメント