7
votes

Existe-t-il une méthode pour vérifier si tous les articles de tableau sont '0'?

J'ai un tableau xxx

Je veux vérifier si toutes les valeurs de tableau sont zéro. xxx

merci < / p>


1 commentaires

Le tableau comprendra-t-il toujours 4 éléments?


10 Réponses :


27
votes

Je suppose que vous pouvez utiliser array_filter () code> strong> A> Pour obtenir un tableau de tous les articles non nuls; et utilisez vide () code> strong> sur ce tableau résultant , pour déterminer si c'est vide ou pas.


Par exemple, avec votre exemple de tableau: p> xxx pré>

à l'aide de la partie suivante du code: p>

array(1) {
  ["b"]=>
  string(1) "1"
}


4 commentaires

Mais sans rappel approprié, une matrice de chaînes vides / tableaux vides / valeurs fausses / null sera également traitée comme une matrice de zéros.


vrai ; qui pourrait ou pourrait ne pas être acceptable pour le PO; Donc, merci pour votre commentaire!


Les valeurs de tableau seront toujours 0 ou 1 dans ce cas ... Donc, aucun problème pour moi accepter cette réponse. Merci


Avec seulement 0 et 1, j'irais avec array_sum comme @knittl proposé



3
votes

Utilisez ceci:

$all_zero = true;
foreach($data as $value)
    if($value != '0')
    {
        $all_zero = false;
        break;
    }
if($all_zero)
    echo "Got it";
else
    echo "No";


0 commentaires

3
votes

Vous pouvez boucler le tableau et quitter la première valeur non nulle (boucles jusqu'à zéro, si assez rapide, lorsqu'une valeur non nulle est au début de la matrice):

function allZeroes($arr) {
  return array_sum($arr) == 0;
}


1 commentaires

J'ai pensé à array_sum aussi, mais tableau ('A' => 2, 'B' => -2) entraînera 0 bien.



1
votes

Autre moyen:

if(array_fill(0,count($data),'0') === array_values($data)){
    echo "All zeros";
}


0 commentaires

6
votes

Que diriez-vous:

// ditch the last argument to array_keys if you don't need strict equality
$allZeroes = count( $data ) == count( array_keys( $data, '0', true ) );


0 commentaires

0
votes
if (!array_filter($data)) {
   // empty (all values are 0, NULL or FALSE)
}
else {
   // not empty
}

0 commentaires

0
votes

Je suis un peu en retard à la fête, mais que diriez-vous de cela: xxx

une astuce similaire utilise array_unique ().


0 commentaires

0
votes

Vous pouvez utiliser cette fonction xxx


0 commentaires

1
votes

Une autre solution rapide peut être la suivante:

if (intval(emplode('',$array))) {
  // at least one non zero array item found
} else {
  // all zeros
}


1 commentaires

Où est Emplode () défini?



0
votes

Vous pouvez utiliser cette doublure: ( Demo ) xxx

$ array = [0, 0, 0, 0]; retourne true

$ array = [0, 0, 1, 0]; renvoie false

Ceci est susceptible de fonctionner très bien car il n'y a qu'un seul appel de fonction.

Ma solution utilise aucune colle Lorsqu'il est imploré, alors jette explicitement la chaîne générée comme un entier, puis utilise la négation pour évaluer 0 aussi vrai et non zéro comme faux. (Ordinairement, 0 évalue comme fausse et toutes les autres valeurs évaluent à vrai.)

... Mais si je faisais cela pour le travail, j'utiliserais probablement ! Array_Filter ($ TRAY)


0 commentaires