J'ai un tableau dans ce format: est un bon moyen de récupérer les valeurs minimales et maximales de la colonne "Compte" ( Je pourrais faire cela en utilisant quelques boucles, mais je me demande s'il peut y avoir une meilleure façon. P> P> 16 code> et
48 code> respectivement)? P>
7 Réponses :
Qu'as-tu fait avec quelques boucles? On est assez assez :) p>
Cela semble raisonnablement bien expliqué, mais sans un extrait, les chercheurs peuvent ne pas mettre en œuvre votre conseil comme vous avez l'intention. Vous pouvez ou non approuver le premier extrait de ma réponse. Si vous avez une prise différente, ajoutez peut-être un extrait à votre réponse et expliquez pourquoi vous le feriez votre solution unique.
Contrairement à ce que d'autres personnes ont affiché, vous ne pouvez pas utiliser le commence édition forte> p> Ma déclaration ci-dessus sur la coulée de type était fausse. Effectivement traduit dans le problème de l'OP, cela indique la raison pour laquelle l'utilisation directe de fin d'exécution forte> p> < La bonne façon serait d'utiliser une boucle. P> min () code>
/ max () code>
fonctionne pour ce problème car ces fonctions ne comprennent pas la source de données (matrice) qui sont transmises. Ces fonctions ne fonctionnent que pour les éléments de tableau scalaire. del>
la raison pour laquelle l'utilisation de min () code>
et max () code>
semble donner la bonne réponse est lié aux tableaux de coulée de type sur les entiers qui sont un comportement non défini : del> p>
le comportement de la conversion en entiers
est indéfini pour d'autres types. Ne pas
compter sur tout comportement observé, comme il
peut changer sans préavis. del> p>
BlockQuote> min () code>
et max () code>
fonctionne avec des tableaux mais pas dans la façon dont l'OP a besoin de leur travail. Lorsque vous utilisez min () code>
et < un href = "http://de3.php.net/manual/fr/funcuncunk.max.php" rel = "nOfollow noreferrer"> max () code> avec plusieurs tableaux ou un Les éléments de tableaux sont comparés élément par élément de gauche à droite: p>
min () code>
et max () code>
semble donner le résultat correct. Les premiers éléments des tableaux sont le ID code> -Values, donc
min () code>
et max () code>
les comparera d'abord, entraînant incidemment le résultat correct, car le le plus bas code> est celui avec le nombre
le plus bas code> et le Le plus élevé
ID code> est celui avec le nombre code> le plus élevé code>. p>
De la page manuelle pour max $ VAL = max (tableau 2, 4, 8), tableau (2, 5, 7)); // Array (2, 5, 7) Code>. Lis le.
Votre réponse est la bonne mais pas pour la raison pour laquelle vous avez indiqué. Min code> et
max code> Poignez-les correctement et ne les jetez pas aux entiers, le manuel donne plus de détails.
@MitMaro: Vous avez raison - mon hypothèse ou mon raisonnement sur l'utilisation de tableaux en min () et max () était faux. J'ai édité ma réponse et j'ai supprimé la mauvaise déclaration.
En tant qu'argument "Tinfoil Hat", si le tableau d'entrée est vide, cette réponse retournera des résultats incorrects. Bien sûr, je ne sais pas s'il est possible que l'application de l'OP soit adoptée dans un tableau vide. Ceci est juste une prudence pour les chercheurs.
On dirait que vous ne pouvez pas utiliser max () sur un tableau 2D. Il renvoie simplement le plus grand tableau, pas le max () de chaque index (comme mentionné dans quelques réponses).
SO: P>
$count = array(); foreach($arr as $_arr) { $count[] = $_arr['count']; } var_dump(max($count), min($count));
Y a-t-il une fonction équivalente forte> forte> à celle-là?
(Même sans la capacité em> Test em>)
Cet extrait ne trouve pas les valeurs min et max dans un tableau de 2 DIM. Ce n'est pas une réponse correcte à cette question.
Si la colonne souhaitée est d'abord dans la matrice, vous pouvez utiliser les one-liners suivants:
$max = max(array_map('current', $a)); $min = min(array_map('current', $a));
Pourquoi appeler array_map () code> deux fois pour la même valeur de retour? Cela manque d'efficacité et n'est pas d.R.Y.
Comme vous pouvez le constater à partir des réponses précédentes, il existe de nombreuses techniques viables à considérer.
Si vous envisagez de meilleures performances, vous devriez alors minimiser le nombre de boucles utilisées et le nombre d'appels de fonction. < / p>
"sous la hotte", les fonctions natales Considérez cet extrait qui iterate 1 fois: p> code: ( Une autre technique laisse la valeur sur le code de style champonal. PHP a des fonctions natives qui rendent les travaux de rangement de cette tâche. P> min () code> et
max () code> itération complètement le tableau qu'ils sont nourris. Donc, si vous utilisez une fonction ou une construction pour boucle sur la matrice d'entrée à 2 dimensions, appelez
min () code>, appelez
max () code>, vous êtes itération du plein Longueur du tableau d'entrée Trois fois séparé. p>
array_shift () code>, donc si vous réutilisez la matrice dans la même portée, il ne contiendra plus la première valeur li>
array_column () code> peut isoler toutes les valeurs de la colonne code>.
min () code> renvoie le nombre le plus bas.
max () code> renvoie le nombre le plus élevé. p>
+1 J'ai couru dans ce problème aujourd'hui et je viens de faire une boucle. Curieux sur quelles autres méthodes il y a.
S'il y a une fonction qui, ce faisant, il sera mis en œuvre avec des boucles, donc ce qui est si mauvais en utilisant vos propres fonctions ?!
@Svetlozar Angelov: Pour les fonctions PHP, les boucles seront écrites en C, pas PHP, elles sont donc généralement plus rapides.