ホームページ >バックエンド開発 >PHPチュートリアル >ネストされた 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 サイトの他の関連記事を参照してください。