J'ai un tableau Je veux vérifier si toutes les valeurs de tableau sont zéro. p> merci p> < / p>
10 Réponses :
Je suppose que vous pouvez utiliser à l'aide de la partie suivante du code: p> 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> array(1) {
["b"]=>
string(1) "1"
}
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 code> comme @knittl proposé
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";
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;
}
J'ai pensé à array_sum code> aussi, mais tableau ('A' => 2, 'B' => -2) code> entraînera 0 code> bien.
Autre moyen:
if(array_fill(0,count($data),'0') === array_values($data)){
echo "All zeros";
}
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 ) );
if (!array_filter($data)) {
// empty (all values are 0, NULL or FALSE)
}
else {
// not empty
}
Je suis un peu en retard à la fête, mais que diriez-vous de cela: une astuce similaire utilise array_unique (). P> P>
Vous pouvez utiliser cette fonction
Une autre solution rapide peut être la suivante:
if (intval(emplode('',$array))) {
// at least one non zero array item found
} else {
// all zeros
}
Où est Emplode () code> défini?
Vous pouvez utiliser cette doublure: ( Demo ) Ceci est susceptible de fonctionner très bien car il n'y a qu'un seul appel de fonction. P> 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.) P> ... Mais si je faisais cela pour le travail, j'utiliserais probablement $ array = [0, 0, 0, 0]; code> retourne true code> p> $ array = [0, 0, 1, 0]; code> renvoie false code> p> ! Array_Filter ($ TRAY) code> p> p>
Le tableau comprendra-t-il toujours 4 éléments?