182 votes

Quelle est la meilleure façon de vérifier si un tableau a plus d'un élément ?

J'ai juste besoin de vérifier si un tableau a plus d'un élément. J'essaie de le faire de cette façon :

if (isset($arr['1']))

l'autre méthode traditionnelle est

if (sizeof($arr)>1)

Lequel des deux est le meilleur ? Dans de telles situations, comment dois-je juger entre deux méthodes alternatives ? Existe-t-il un appareil de contrôle des performances permettant de déterminer laquelle est la meilleure ?

0 votes

L'hypothèse ici est que $arr est déjà validé pour un tableau ! Cela signifie qu'avant la vérification de la condition if, il a déjà été vérifié s'il s'agit d'un tableau.

0 votes

349voto

Chibuzo Points 3176

Utilisez cette

if (sizeof($arr) > 1) {
     ....
}

Ou

if (count($arr) > 1) {
     ....
}

sizeof() est un alias pour count() ils fonctionnent de la même manière.

Edit : Répondre à la deuxième partie de la question : Les deux lignes de codes de la question ne sont pas des méthodes alternatives, elles remplissent des fonctions différentes. La première vérifie si la valeur à $arr['1'] est définie, tandis que la seconde renvoie le nombre d'éléments dans le tableau.

8 votes

@N.B. : La question a été modifiée, le code initial était if (sizeof($arr)) ce qui se traduit par if (sizeof($arr) == 1) - clairement qui ne vérifie pas si le tableau a plus d'un élément. Cette réponse est correcte, et je ne vois aucune raison de la décoter, d'où mon vote positif.

2 votes

J'admets que je n'ai pas jeté un coup d'œil à la version originale de la question, à laquelle cette réponse est une réponse. Le contexte est différent, et je m'excuse d'avoir qualifié la réponse de mauvaise. Ce n'est pas une erreur, si vous regardez la question originale. Elle est mauvaise pour la question modifiée.

0 votes

Le deuxième extrait de code de la question vérifie si la valeur de $arr['1'] est définie ou non, sans se soucier du nombre. Ce point n'a pas été abordé dans la réponse, j'ai juste pensé que je devais le mentionner et j'espère que l'auteur de la réponse la mettra à jour :).

46voto

SiGanteng Points 23915

if(is_array($arr) && count($arr) > 1)

Juste pour être sûr que $arr est bien un tableau.

sizeof est un alias de count Je préfère utiliser le comptage parce que :

  1. 1 caractère de moins à taper
  2. sizeof à première vue pourrait signifier la taille d'un tableau en termes de mémoire, trop technique :(

0 votes

@AlixAxel hmm, mais si $arr est une chaîne de caractères, count($arr) renverrait le nombre de caractères de cette chaîne de caractères donc ya

0 votes

Non, si $arr est une chaîne de caractères, il retournera 1 .

0 votes

@AlixAxel oh ok... wow merci, je ne le savais pas :o... Dans tous les cas, je vais juste le laisser là au cas où l'OP voudrait faire la différence entre une chaîne et un tableau (indépendamment de la taille) Merci de l'avoir souligné :)

6voto

ThiefMaster Points 135805

Il est évident qu'en utilisant count($arr) > 1 ( sizeof est juste un alias pour count ) est la meilleure solution. Selon la structure de votre tableau, il se peut qu'il y ait des tonnes d'éléments mais aucun $array['1'] élément.

6voto

Utilisez count()

if (count($my_array) > 1) {
// do
}

cette page l'explique assez bien http://phparraylength.com/

3voto

Bono Points 1567

Isset() vérifie seulement si une variable est définie Cela n'a rien à voir avec la taille ou le contenu du tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X