Tout d'abord, passons en revue l'utilisation de base de la fonction max () . Il peut recevoir un tableau ou un ensemble de valeurs individuelles sous forme de paramètres, renvoyant la valeur maximale entre eux. Par exemple:
<span><span><span class="hljs-variable">$values</span></span><span> = [</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$values</span></span><span>); </span><span><span class="hljs-comment">// Sortir 50</span></span><span>
</span></span>
Cette fonction prend également en charge le passage de plusieurs paramètres, chaque paramètre étant comparé en tant que valeur distincte. Par exemple:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>); </span><span><span class="hljs-comment">// Sortir 50</span></span><span>
</span></span>
Pour les structures de tableau simple, la fonction max () est très simple à utiliser. Mais lorsque les tableaux deviennent plus complexes, en particulier les tableaux multidimensionnels, la situation sera différente.
Dans les tableaux multidimensionnels, la fonction max () ne peut gérer que les éléments de tableau les plus externes par défaut. Si nous voulons trouver la valeur maximale dans un tableau multidimensionnel, nous devons nous fier à certaines méthodes de traitement supplémentaires. Voici quelques conseils courants.
Supposons que nous ayons un tableau multidimensionnel, chaque sous-réseau du tableau contient certains nombres. Si nous voulons obtenir la valeur maximale dans chaque sous-réseau, nous pouvons d'abord appliquer max () à chaque sous-réseau via la fonction array_map () , puis utiliser max () pour trouver la valeur maximale. Les exemples sont les suivants:
<span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>],
[</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>],
[</span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-number">9</span></span><span>]
];
</span><span><span class="hljs-comment">// Obtenez la valeur maximale de chaque sous-réseau</span></span><span>
</span><span><span class="hljs-variable">$max_values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'max'</span></span><span>, </span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-comment">// Sortir每个子数组的最大valeur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$max_values</span></span><span>); </span><span><span class="hljs-comment">// Sortir [3, 6, 9]</span></span><span>
</span><span><span class="hljs-comment">// Obtenez la valeur maximale</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max_values</span></span><span>); </span><span><span class="hljs-comment">// Sortir 9</span></span><span>
</span></span>
Dans cet exemple, array_map ('max', $ array) appliquera la fonction max () à chaque sous-réseau pour obtenir la valeur maximale dans chaque sous-réseau. Ensuite, utilisez la fonction max () pour obtenir le maximum de ces valeurs maximales.
Parfois, les données dans un tableau multidimensionnel sont un tableau associatif, et chaque sous-réseau a une clé spécifique (telle que "score") et nous voulons simplement trouver la valeur maximale dans la valeur d'une clé particulière. Dans ce cas, Array_Column () est très utile. Il peut extraire une colonne spécifiée de tous les sous-réseaux dans un tableau multidimensionnel, puis l'utiliser en conjonction avec la fonction max () . Les exemples sont les suivants:
<span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Charlie'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>]
];
</span><span><span class="hljs-comment">// Extraire tous les étudiantsscorevaleur</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span>);
</span><span><span class="hljs-comment">// Sortir所有学生的分数</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>); </span><span><span class="hljs-comment">// Sortir [85, 90, 92]</span></span><span>
</span><span><span class="hljs-comment">// Obtenez le score maximal</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>); </span><span><span class="hljs-comment">// Sortir 92</span></span><span>
</span></span>
Dans cet exemple, Array_Column ($ array, 'score') extrait les scores pour tous les étudiants, puis utilise la fonction max () pour trouver le score maximal.
Si le niveau de nidification du tableau est plus profond, nous pouvons utiliser des méthodes récursives pour le gérer. Les fonctions récursives peuvent être utilisées pour itérer via des tableaux multidimensionnels et trouver la valeur maximale. Voici un exemple de méthode récursive:
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getMaxValue</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$array</span></span></span><span>) {
</span><span><span class="hljs-variable">$max</span></span><span> = PHP_INT_MIN; </span><span><span class="hljs-comment">// 设置一个初始valeur</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-comment">// 如果valeur是一个数组,Puis appelez récursivement</span></span><span>
</span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max</span></span><span>, </span><span><span class="hljs-title function_ invoke__">getMaxValue</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-comment">// 否则直接与当前最大valeur比较</span></span><span>
</span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>);
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$max</span></span><span>;
}
</span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>]],
[</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, [</span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>]],
</span><span><span class="hljs-number">9</span></span><span>
];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getMaxValue</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>); </span><span><span class="hljs-comment">// Sortir 9</span></span><span>
</span></span>
Cette méthode traverse récursivement chaque couche du tableau. Si la valeur actuelle est un tableau, il passe à la couche suivante pour continuer à comparer; S'il s'agit d'une valeur numérique, il est comparé à la valeur maximale actuelle. Enfin, la valeur maximale de l'ensemble du tableau multidimensionnel est renvoyée.