Problème :
Étant donné un tableau PHP imbriqué, déterminez comment efficacement extraire les valeurs minimales et maximales pour une clé spécifique.
Exemple :
<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>
Solution :
Option 1 : Utilisation de array_column() et min()/max()
Cette méthode exploite la fonction array_column() pour extraire les valeurs « Poids » dans un tableau numérique. Les fonctions min() et max() sont ensuite utilisées pour déterminer respectivement les valeurs minimale et maximale.
<code class="php">$weights = array_column($array, 'Weight'); $minValue = min($weights); $maxValue = max($weights);</code>
Option 2 : Utilisation de array_map()
Semblable à l'option 1, cette méthode utilise array_map() pour extraire les valeurs « Poids ». Cependant, elle nécessite une fonction personnalisée pour effectuer le mappage.
<code class="php">$weights = array_map(function($item) { return $item['Weight']; }, $array); $minValue = min($weights); $maxValue = max($weights);</code>
Option 3 (obsolète) : Utilisation de boucles imbriquées
Cette méthode n'est pas recommandée car elle est relativement inefficace, en particulier pour les grands tableaux.
<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>
Option 4 : Utilisation de array_reduce()
Cette méthode est utile pour des scénarios spécifiques dans lesquels vous devez effectuer des calculs supplémentaires ou traitement tout en déterminant la valeur minimale ou maximale.
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!