问题:
给定一个嵌套的 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() 函数将“权重”值提取到数值数组中。然后使用 min() 和 max() 函数分别确定最小值和最大值。
<code class="php">$weights = array_column($array, 'Weight'); $minValue = min($weights); $maxValue = max($weights);</code>
选项 2:使用 array_map()
与选项 1 类似,此方法利用 array_map() 提取“权重”值。但是,它需要自定义函数来执行映射。
<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中文网其他相关文章!