PHP開発では、配列データを処理する場合、特定の条件を満たし、最小値を見つける要素を除外する必要があることがよくあります。この記事では、 Array_FilterとMIN関数を組み合わせて、効率的かつ簡潔な最小値フィルタリング方法を実現する方法を紹介します。
array_filter :配列を通過し、カスタマイズされたコールバック関数に基づいて条件を満たす要素を除外し、新しい配列を返すために使用します。
MIN :配列の最小値、または複数のパラメーターの最小値を返します。
一般に、 MINを直接使用する場合、条件を満たさない要素をフィルタリングすることはできません。 array_filterは、条件を満たす要素をフィルタリングし、結果にminを適用して最小値を取得できます。
一部の製品の価格を示すデータのセットがあるとしますが、100を超える価格の製品の最小価格のみを取得したいと考えています。
<?php
$prices = [150, 50, 200, 120, 80, 300];
// 使用 array_filter 価格を除外します 100 要素
$filtered = array_filter($prices, function($price) {
return $price > 100;
});
// 使用 min フィルタリングされた配列の最小値を取得します
$minPrice = min($filtered);
echo "価格はより大きい 100 最小値はです:" . $minPrice;
?>
出力結果:
価格はより大きい 100 最小値はです:120
フィルタリング条件が厳しすぎてフィルタリングされた配列が空になっている場合、 MIN関数は警告を投げて、プログラムにエラーを報告します。
最初に、フィルタリングされた配列が空であるかどうかを判断できます。
<?php
$filtered = array_filter($prices, function($price) {
return $price > 500; // 厳格な条件,結果がないかもしれません
});
if (!empty($filtered)) {
$minPrice = min($filtered);
echo "符合条件最小値はです:" . $minPrice;
} else {
echo "没有符合条件要素。";
}
?>
配列がキー価値ペアであり、値に基づいてフィルタリングする必要がある場合:
<?php
$products = [
'A' => 150,
'B' => 50,
'C' => 200,
'D' => 120,
'E' => 80,
'F' => 300,
];
$filtered = array_filter($products, fn($price) => $price > 100);
if (!empty($filtered)) {
$minPrice = min($filtered);
$minKey = array_search($minPrice, $filtered);
echo "価格はより大きい100製品の中で,最低価格はです $minPrice,製品番号はです $minKey";
} else {
echo "基準を満たす製品はありません。";
}
?>
最初にarray_filterを使用して、基準を満たす要素をフィルタリングします。
次に、 Minを使用して、フィルタリング後に最小値を見つけます。
ランタイムエラーを避けるために、空の配列の境界の状況を処理することに注意してください。
キー値配列を組み合わせるときは、 array_searchを使用して、対応するキー名を見つけます。
この方法は簡潔で明確で、コードは読みやすく効率的であり、フィルタリングと最小値の検索が必要なほとんどのシナリオに適しています。
関連タグ:
array_filter