PHPのarray_any関数の使い方!配列の要素がひとつでも同じか

PHPのarray_any関数は、配列内に指定された条件(コールバック関数)を満たす要素が1つ以上存在するかどうかを判定します。
PHP8.4から使用できるようになった関数です。

この関数を使うと、配列内に特定の条件を満たす要素が存在するかどうかを効率的にチェックできます。
配列内のデータのバリデーションや、特定の条件を満たすデータが存在するかどうかを確認する場合に便利です。

array_any関数の基本的な使い方

array_any関数は、配列内に指定された条件(コールバック関数)を満たす要素が1つ以上存在する場合にtrueを返し、それ以外の場合はfalseを返します。
基本的な構文は以下のとおりです。

array_any(array $array, callable $callback): bool
  • $array: チェックする配列。
    • 任意の型の要素を持つ配列を指定します。
  • $callback: 各要素に対して実行されるコールバック関数。
    • 各要素を引数として受け取り、真偽値を返す関数を指定します。

array_any関数の戻り値

array_any関数の戻り値は、以下のいずれかです。

  • true: 配列内にコールバック関数でtrueを返す要素が1つ以上存在する場合。
  • false: 配列内にコールバック関数でtrueを返す要素が存在しない場合。

配列内に条件を満たす要素が存在するか判定する

配列内に条件を満たす要素が存在するか確認してみます。

<?php
$array1 = [1, 2, 3, 4, 5];
$array2 = [1, 2, 3, 4, -5];

$result1 = array_any($array1, function ($value) {
    return $value < 0;
});

$result2 = array_any($array2, function ($value) {
    return $value < 0;
});

var_dump($result1); // 結果:bool(false)
var_dump($result2); // 結果:bool(true)
?>

最初にarray1array2の2つの配列を作成しました。

そしてarray_any関数を使って、配列$array1$array2内に負の数が存在するかどうかを判定しています。
第1引数に確認したい配列を渡して、第2引数にチェックするための無名関数を書いています。

$value変数には、配列の値がひとつづつとりだされて、内部のチェックロジックを通ります。
$array1のすべての要素は正の数であるため、array_any関数はfalseを返します。
一方、$array2には負の数が含まれているため、array_any関数はtrueを返します。

連想配列の値に条件を満たす要素が存在するか判定する

連想配列の値に条件を満たす要素が存在するか確認してみます。

<?php
$array = [
    'apple' => 100,
    'banana' => 200,
    'orange' => 300,
    'grape' => -10,
];

$result = array_any($array, function ($value) {
    return $value < 0;
});

var_dump($result); // 結果:bool(true)
?>

連想配列$arrayの値に負の数が存在するかどうかを判定しています。
配列$arrayの値には-10が含まれているため、array_any関数はtrueを返します。

このように、array_any関数を使うことで、配列内に特定の条件を満たす要素が存在するかどうかを効率的に判定できます。

連想配列のキーに条件を満たす要素が存在するか判定する

連想配列のキーに条件を満たす要素が存在するか確認してみます。

<?php
$array = [
    'apple' => 100,
    'banana' => 200,
    'orange' => 300,
    'grape' => -10,
];

$result = array_any($array, function ($value, $key) {
    return strlen($key) > 5;
});

var_dump($result); // 結果:bool(true)
?>

連想配列$arrayのキーに5文字より大きい文字列が存在するかどうかを判定しています。
連想配列のキーはarray_anyのコールバック関数の第2引数で受け取れます。

判定ロジックではstrlen関数を使ってキーの文字数を取得し、5より大きいかどうかをチェックしています。
配列$arrayのキーにはorangeが存在するため、array_any関数はtrueを返します。

このように、array_any関数のコールバック関数では、値だけでなくキーも引数として受け取ることができます。

array_any関数を使うメリット

array_any関数を使う主なメリットは以下のとおりです。

  • 配列の要素の効率的なチェック: 配列内に条件を満たす要素が存在するかどうかを効率的にチェックできます。
  • 可読性の向上: ループ処理を記述する必要がなく、コードが簡潔になり、可読性が向上します。
  • 柔軟な条件設定: コールバック関数を使って、複雑な条件を設定できます。

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

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

・`array_any(array $array, callable $callback): bool`で配列内に指定された条件を満たす要素が1つ以上存在するかどうかを判定する。
・`$array`はチェックする配列。
・`$callback`は各要素に対して実行されるコールバック関数。
・配列内に条件を満たす要素が1つ以上存在する場合は`true`、それ以外の場合は`false`を返す。
・配列内のデータのバリデーションや、特定の条件を満たすデータが存在するかどうかを確認する場合に便利。
PHP

コメント