PHP de Récupérer les valeurs minimale et maximale dans un 2D tableau associatif
J'ai un tableau dans ce format:
Array
(
[0] => Array
(
[id] => 117
[name] => Networking
[count] => 16
)
[1] => Array
(
[id] => 188
[name] => FTP
[count] => 23
)
[2] => Array
(
[id] => 189
[name] => Internet
[count] => 48
)
)
Est-il un bon moyen de récupérer les valeurs minimales et maximales de "compter"? J'ai pu le faire à l'aide de quelques boucles mais j'ai pensé qu'il peut y avoir une meilleure façon.
+1 j'ai rencontré ce problème aujourd'hui et j'ai juste fait une boucle. Curieux de savoir sur quelles d'autres méthodes.
Si il y a une fonction qui ce faire, il sera mis en œuvre avec des boucles, alors, quel est si mauvais en utilisant vos propres fonctions?!
Angelov: PHP les fonctions de la boucle sera écrit en C, pas de PHP, de sorte qu'ils sont généralement plus rapides.
Si il y a une fonction qui ce faire, il sera mis en œuvre avec des boucles, alors, quel est si mauvais en utilisant vos propres fonctions?!
Angelov: PHP les fonctions de la boucle sera écrit en C, pas de PHP, de sorte qu'ils sont généralement plus rapides.
OriginalL'auteur James B | 2009-08-28
Vous devez vous connecter pour publier un commentaire.
Contrairement à ce que d'autres ont affiché, vous ne pouvez pas utiliser le
min()
/max()
fonctions pour résoudre ce problème tant que ces fonctions ne comprends pas la discbased (array) qui sont passés dans l'.Ces fonctions ne fonctionnent que pour les scalaires des éléments d'un tableau.COMMENCER À MODIFIER
La raison pour laquelle l'utilisation demin()
etmax()
semblent donner la bonne réponse est liée à la conversion de type tableaux d'entiers qui est un comportement indéfini:Ma déclaration ci-dessus à propos de la conversion de type est mauvais. En fait
min()
etmax()
travailler avec des tableaux mais pas de la façon que l'OP a besoin d'eux pour travailler. Lors de l'utilisation demin()
etmax()
avec plusieurs tableaux ou un tableau de tableaux sont des éléments de comparaison élément par élément, de gauche à droite:Traduit dans le cas des OP problème cela montre la raison pour laquelle l'utilisation directe de
min()
etmax()
semble céder le résultat correct. Les baies premiers éléments sont lesid
-valeurs, doncmin()
etmax()
permettra de comparer en premier, d'ailleurs résultant dans le résultat correct parce que le plus basid
est celui avec la plus petitecount
et le plus hautid
est celui avec la plus hautecount
.FIN MODIFIER
La bonne façon serait d'utiliser une boucle.
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
. La lire.Votre réponse est correcte mais pas pour la raison que vous avez déclaré.
min
etmax
faire gérer tableaux correctement et ne pas les jeter pour les entiers, le manuel donne plus de détails.Vous avez raison, mon hypothèse ou le raisonnement à propos de l'utilisation de tableaux dans min() et max() était erronée. J'ai édité ma réponse et retiré de la fausse déclaration.
OriginalL'auteur Stefan Gehrig
Vous pouvez utiliser le max() et min() fonctions.
OriginalL'auteur Mr. Smith
Qu'avez-vous avec quelques boucles? On est bien assez 🙂
OriginalL'auteur Anti Veeranna
Vous pouvez utiliser le
max
/min
fonctions qu'ils seront de retour un tableau contenant le maximum/minimum de chaque indice. Votre exemple doit retournerarray(189, 'Networking
pour', 48)
max
. Vous pouvez alors saisir le comte du tableau.Mise à jour cela ne fonctionne pas comme je l'avais réservée. La page de manuel exemple est trompeuse et l'exemple donne le résultat correct à l'aide de max, mais c'est juste une coïncidence.
max($array)['count']
etmin($array)['count']
Dav: j'ai un parse error quand je l'ai essayer. Peut-être votre façon de penser de Python.
Peut-être que vous devriez relire la question MitMaro! 😛
Oh, désolé MitMaro - oublié que PHP ne vous laisse pas invoquer l'indexation directement sur un résultat de fonction. Vous ne
$temp = max($array); print($temp['count']);
.Je souhaite PHP eu cette fonctionnalité, c'est une belle.
OriginalL'auteur MitMaro
Semble que vous ne pouvez pas utiliser le max() sur un tableau 2D. Elle retourne le plus grand tableau, pas le max() de chaque indice (comme mentionné dans un peu de réponses).
Donc:
OriginalL'auteur bucabay
Est-il un équivalent construire-dans le fonction de celui-ci?
(même sans le test capacité)
OriginalL'auteur Alex
Si la colonne désirée est d'abord, dans le tableau, vous pouvez utiliser la suite de one-liners:
Cela permettra de trouver le min/max de id
OriginalL'auteur AquilaX