【PHP8.x】array_all関数の使い方

作成日: 更新日:

array_all関数は、配列のすべての要素が真と評価されるかどうかを判定する関数です。PHP 8以降で使用できます。この関数は、配列内のすべての要素がtrueと評価される場合にtrueを返し、そうでない場合はfalseを返します。具体的には、空の配列の場合はtrueを返し、配列内にfalse、null、0、""(空文字列)などのPHPでfalseと評価される値が一つでも含まれている場合はfalseを返します。それ以外の値(例えば、true、1、"non-empty string"など)が含まれている場合はtrueを返します。

この関数は、配列の内容全体が特定の条件を満たしているかを確認する際に役立ちます。例えば、設定値がすべて有効かどうかを検証したり、データベースから取得したデータがすべて期待される形式であるかを確認したりする場合などに利用できます。array_all関数を使用することで、配列の各要素を個別に評価する手間を省き、コードをより簡潔に記述することができます。また、この関数はbool値を返すため、if文などの条件分岐の中で直接使用することも可能です。

基本的な使い方

構文(syntax)

array_all(array $array, callable $callback): bool

引数(parameters)

array $array, callable $callback

  • array $array: チェック対象となる配列
  • callable $callback: 配列の各要素に対して実行されるコールバック関数

戻り値(return)

bool

指定された条件に一致する関数・メソッド・プロパティ・定数が存在しないため、説明を生成できません。

サンプルコード

配列全要素の条件判定を行う

<?php

/**
 * 指定された配列の全ての要素が、指定されたコールバック関数によるテストに合格するかどうかをチェックします。
 *
 * @param array    $array    チェックする配列
 * @param callable $callback 各要素に対して実行するコールバック関数。引数として要素の値を受け取り、bool値を返す必要があります。
 *
 * @return bool 配列の全ての要素がコールバック関数によるテストに合格した場合はtrue、そうでない場合はfalse。
 */
function array_all(array $array, callable $callback): bool
{
    foreach ($array as $value) {
        if (!$callback($value)) {
            return false; // いずれかの要素がテストに失敗した場合、falseを返す
        }
    }

    return true; // 全ての要素がテストに合格した場合、trueを返す
}

// サンプル使用例
$numbers = [2, 4, 6, 8, 10];

// 全ての要素が偶数かどうかをチェックするコールバック関数
$isEven = function (int $number): bool {
    return $number % 2 === 0;
};

// array_all関数を使用して、配列の全ての要素が偶数かどうかをチェック
$allEven = array_all($numbers, $isEven);

// 結果を出力
var_dump($allEven); // bool(true)

array_all関数は、PHP 8で配列のすべての要素が、指定されたコールバック関数によるテストに合格するかどうかを判定する関数です。システムエンジニアを目指す初心者の方にも理解しやすいように、具体的な例を交えながら説明します。

この関数は、第一引数に検査対象の配列 $array を、第二引数に各要素に対して実行するコールバック関数 $callback を受け取ります。コールバック関数は、配列の各要素の値を引数として受け取り、その要素がテストに合格したかどうかを示す真偽値(bool)を返す必要があります。

array_all関数は、配列内のすべての要素に対してコールバック関数を実行し、いずれかの要素がコールバック関数でfalseを返した場合、直ちにfalseを返します。つまり、配列の中に条件を満たさない要素が一つでも存在すれば、全体のテストは失敗となります。

一方、配列内のすべての要素がコールバック関数でtrueを返した場合、array_all関数はtrueを返します。これは、配列のすべての要素が指定された条件を満たしていることを意味します。

サンプルコードでは、$numbersという配列のすべての要素が偶数であるかどうかをチェックしています。$isEvenというコールバック関数は、与えられた数値が偶数であればtrueを、奇数であればfalseを返します。array_all($numbers, $isEven)を実行することで、$numbers配列のすべての要素が偶数であるかどうかが判定され、結果がvar_dumpによって出力されます。この例では、すべての要素が偶数であるため、bool(true)が出力されます。

array_all関数は、配列のすべての要素が指定された条件を満たすか確認する便利な関数です。注意点として、コールバック関数は配列の各要素に対して実行され、必ず真偽値(trueまたはfalse)を返す必要があります。コールバック関数が例外をスローした場合、array_all関数はそこで処理を停止し、例外を伝播します。また、空の配列を渡すと、コールバック関数は一度も実行されず、array_all関数はtrueを返します。コールバック関数内で配列自体を直接変更すると、予期せぬ動作を引き起こす可能性があるため、避けるべきです。

【PHP8.x】array_all関数の使い方 | いっしー@Webエンジニア