web-dev-qa-db-fra.com

Quel est le meilleur moyen 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 façon traditionnelle est

if (sizeof($arr)>1)

Lequel des deux est le meilleur? Dans de telles situations, comment devrais-je juger entre deux méthodes alternatives? Existe-t-il un indicateur de performance permettant de déterminer lequel est le meilleur?

177
tuxnani

Utilisez ceci

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éponse à 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. Le premier vérifie si la valeur sur $arr['1'] est défini, tandis que le second renvoie le nombre d'éléments dans le tableau.

340
Chibuzo

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 count car:

  1. 1 caractère de moins à taper
  2. sizeof en un coup d'œil pourrait signifier une taille de tableau en termes de mémoire, trop technique :(
44
Andreas Wong
if (count($arr) >= 2)
{
  // array has at least 2 elements
}

sizeof() est un alias pour count(). Les deux fonctionnent aussi avec des non-tableaux, mais ils ne renverront que des valeurs supérieures à 1 si l'argument est un tableau ou un objet Countable, vous êtes donc assez sûr avec cela.

6
Alix Axel

Évidemment, utiliser count($arr) > 1 (sizeof n'est qu'un alias pour count) est la meilleure solution. Selon la structure de votre tableau, il peut y avoir des tonnes d'éléments mais pas d'élément $array['1'].

6
ThiefMaster

Je préfère la fonction count() au lieu de sizeOf(), car sizeOf() n'est qu'un alias de count() et ne signifie pas la même chose dans de nombreuses autres langues. De nombreux programmeurs s'attendent à ce que sizeof() renvoie la quantité de mémoire allouée.

6
Mithun Debnath

Utiliser count()

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

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

6
Fahmi

Pour vérifier un tableau vide () est mieux que sizeof ().

Si le tableau contient une énorme quantité de données. Il faudra plus de temps pour compter la taille du tableau. Mais vérifier vide est toujours facile.

//for empty
  if(!empty($array))
     echo 'Data exist';
  else 
     echo 'No data';


 //for sizeof
 if(sizeof($array)>1)
      echo 'Data exist';
 else 
    echo 'No data';
4
Kabir Hossain

isset () vérifie uniquement si une variable est définie .. N'a rien à voir avec la taille ou ce que le tableau contient

3
Bono

Je suppose que $ arr est un tableau alors c’est ce que vous recherchez

if ( sizeof($arr) > 1) ...
2
Thariama

La première méthode if (isset($arr['1'])) ne fonctionnera pas sur un tableau associatif.

Par exemple, le code suivant affiche "Nope, pas plus d'un."

$arr = array(
    'a' => 'Apple',
    'b' => 'banana',
);

if (isset($arr['1'])) {
    echo "Yup, more than one.";
} else {
    echo "Nope, not more than one.";
}
1
Dan Cron

Je boucle mon tableau et je remplis mes valeurs par défaut conformément à Swift 4/5

   for index in 0..<3
    {
        let isIndexValid = allObjects.indices.contains(index)
        var yourObject:Class = Class()
        if isIndexValid { yourObject = allObjects[index]}
        resultArray.append(yourObject)
    }
0
Alex22