PHPバージョン
4.0.6+
// フィルタリングする配列
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// 開発者が定義したコールバック関数
function isEven($value) {
    return $value % 2 == 0; // 偶数の場合はtrueを返す
}

// フィルタリングされた配列として返す
$evenNumbers = array_filter($numbers, 'isEven');

print_r($evenNumbers);
/*
出力:元の配列のキー(インデックス)をそのまま保持
    Array
    (
        [1] => 2
        [3] => 4
        [5] => 6
        [7] => 8
        [9] => 10
    )
*/
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
/**
 * コールバック関数
 *
 * @param mixed $element 配列の各要素
 * @return bool フィルタリング条件を満たす場合はtrue、満たさない場合はfalseを返す
 *
 * 名前付き関数(ユーザー定義関数)や無名関数などで使用できます。
 */


/* 名前付き関数をコールバック関数として使用する場合 */
function callback($element) { // 名前付き関数の定義
    // フィルタリングするロジック:フィルタリングされた結果を返す必要があります。
}

array_filter($array, 'callback'); // 定義した名前付き関数名を文字列として引数に直接渡す

/* 無名関数をコールバック関数として使用する場合 */
array_filter($array, function($element) {
    // フィルタリングするロジック:フィルタリングされた結果を返す必要があります。
});
// フィルタリングする配列
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// 開発者が定義したコールバック関数
function isEven($value) {
    return $value % 2 == 0; // 偶数の場合はtrueを返す
}

// フィルタリングされた配列として返す
$evenNumbers = array_filter($numbers, 'isEven');

print_r($evenNumbers);
/*
出力:元の配列のキー(インデックス)をそのまま保持
    Array
    (
        [1] => 2
        [3] => 4
        [5] => 6
        [7] => 8
        [9] => 10
    )
*/

// 注意:フィルタリングされた配列でのインデックスの扱い
var_dump($evenNumbers[0]); // null
$data = ['apple', '', 'banana', null, 'cherry'];

// 空の値を削除
$filteredData = array_filter($data); // コールバック関数を指定しなかった場合

// 結果を出力
print_r($filteredData);
$array = ["apple", "banana", "cat", "dog", "elephant"];

$stringsStartingWithA = array_filter($array, function ($string) {
    return $string[0] == "a";
});

print_r($stringsStartingWithA);
/*
出力:
    Array
    (
        [0] => apple
    )
*/
$data = ['apple', '', 'banana', null, 'cherry'];

// 空の値を削除するコールバック関数を指定
$filteredData = array_filter($data, function ($value) {
    return !empty($value);
});

// 結果を出力
print_r($filteredData);
/*
出力:
    Array
    (
        [0] => apple
        [2] => banana
        [4] => cherry
    )
*/
$scores = [
    'Alice' => 85,
    'Bob' => 92,
    'Carol' => 78,
    'David' => 95
];

// 90点以上の学生をフィルタリング
$topScorers = array_filter($scores, function ($value) {
    return $value >= 90;
});

// 結果を出力
print_r($topScorers);
/*
出力:
    Array
    (
        [Bob] => 92
        [David] => 95
    )
*/