ネストされた PHP 配列の最小値と最大値を効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-26 15:04:02
オリジナル
398 人が閲覧しました

How to Efficiently Find Minimum and Maximum Values in a Nested PHP Array?

PHP 配列から最小値と最大値を取得する

問題:

ネストされた PHP 配列が与えられた場合、効率的に取得する方法を決定する特定のキーの最小値と最大値を抽出します。

例:

<code class="php">$array = [
    [
        'id' => '20110209172713',
        'Date' => '2011-02-09',
        'Weight' => '200',
    ],
    [
        'id' => '20110209172747',
        'Date' => '2011-02-09',
        'Weight' => '180',
    ],
    [
        'id' => '20110209172827',
        'Date' => '2011-02-09',
        'Weight' => '175',
    ],
    [
        'id' => '20110211204433',
        'Date' => '2011-02-11',
        'Weight' => '195',
    ],
];</code>
ログイン後にコピー

解決策:

オプション 1: array_column() および min()/max() を使用する

このメソッドは、array_column() 関数を活用して、「Weight」値を数値配列に抽出します。次に、min() 関数と max() 関数を使用して、それぞれ最小値と最大値を決定します。

<code class="php">$weights = array_column($array, 'Weight');
$minValue = min($weights);
$maxValue = max($weights);</code>
ログイン後にコピー

オプション 2: array_map() を使用する

オプション 1 と同様に、このメソッドは array_map() を利用して「Weight」値を抽出します。ただし、マッピングを実行するにはカスタム関数が必要です。

<code class="php">$weights = array_map(function($item) {
    return $item['Weight'];
}, $array);

$minValue = min($weights);
$maxValue = max($weights);</code>
ログイン後にコピー

オプション 3 (非推奨): ネストされたループの使用

この方法は現状では推奨されません特に大規模な配列の場合、比較的非効率です。

<code class="php">$minValue = INF;
$maxValue = -INF;

foreach ($array as $item) {
    if ($item['Weight'] < $minValue) {
        $minValue = $item['Weight'];
    }

    if ($item['Weight'] > $maxValue) {
        $maxValue = $item['Weight'];
    }
}</code>
ログイン後にコピー

オプション 4: array_reduce() を使用する

このメソッドは、追加の計算を実行する必要がある特定のシナリオに役立ちます。または最小値または最大値を決定しながら処理します。

<code class="php">$minValue = array_reduce($array, function($min, $item) {
    return min($min, $item['Weight']);
}, PHP_INT_MAX);

$maxValue = array_reduce($array, function($max, $item) {
    return max($max, $item['Weight']);
}, -PHP_INT_MAX);</code>
ログイン後にコピー

以上がネストされた PHP 配列の最小値と最大値を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!