2009-08-26 9 views
1

Y at-il une fonction disponible en PHP pour vérifier si un tableau est vide ou comment puis-je le faire sans utiliser de boucle?Vérifiez si un tableau est vide sans utiliser de boucle?

Par exemple: $b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');

Comment puis-je vérifier le tableau $ b contient des valeurs vides sans utiliser une boucle?

+0

J'ai essayé avec les fonctions count et sizeof, ses index ne renvoyant que des valeurs. – Paulraj

+0

Cletus a raison quand il dit que vous allez boucler n'importe quoi, mais je me demande un peu pourquoi vous voulez éviter les boucles. Y a-t-il une raison autre que la curiosité? –

+0

J'ai un grand nombre de valeurs grâce à un tableau multidimensionnel. donc je pensais que ce serait mieux si je rejette l'utilisation de boucles ... – Paulraj

Répondre

14

simple:

function allEmpty($array) 
{ 
    return empty(array_filter($array)); // (PHP < 5.3) or 
    $array = array_filter($array); return empty($array); // (PHP >= 5.3) or just 
    return array_filter($array) === array(); 
} 

function someEmpty($array) 
{ 
    return ($array !== array_filter($array)); 
} 
+0

Pourquoi ce vote a-t-il été voté? – nilamo

+0

Pourquoi diable ai-je eu un vote de -1? –

+0

Je suppose que techniquement c'est toujours en boucle, mais c'est peut-être mieux que d'écrire votre propre boucle. – deceze

3

Que vous utilisiez une boucle ou une fonction de tableau, vous bouclez toujours à travers le réseau alors gardez simple boucle et juste à travers le réseau:

function isEmpty($arr) { 
    foreach ($arr as $k => $v) { 
    if ($v) { 
     return false; 
    } 
    } 
    return true; 
} 

Selon ce que vous voulez définir comme vide, vous pouvez vérifier que pour les chaînes vides:

function isEmpty($arr) { 
    foreach ($arr as $k => $v) { 
    if ($v === '') { 
     return false; 
    } 
    } 
    return true; 
} 
0

si vous voulez vérifier les chaînes vides '' vous pouvez utiliser in_array

if(!in_array('', $array)) echo 'array doesn’t contain empty strings'; 
if(in_array('', $array)) echo 'array does contain at least one empty string'; 

vous pourriez également essayer array_filter avec une méthode de rappel vide, et les comparer à un tableau vide (ou utilisez empty()):

if(empty(array_filter($array))) echo 'array only contains values evaluating to false'; 
+0

pour quoi était le downvote? J'ai édité ma question pour montrer mieux ce que je voulais dire – knittl

1

Plus simplement, pas.

Si vous ne voulez pas faire littéralement foreach/for/while, vous pouvez utiliser array_walk.

1

Si tel est le tableau spécifique que vous voulez vérifier (ex: il n'a key => valeurs et vide est toujours key => '') ...

$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => ''); 
$temp = array_flip($b); 
if(count($temp) === 1 && empty($temp[0])){ 
    echo 'empty'; 
} 

Sinon, vous allez devoir utiliser une boucle ... pardon.

0

Je vérifie habituellement en utilisant la condition suivante:

if(is_array($array) and count($array)) { 
// ... code here ... 
} 

C'est tout.

0

Un simple

if(!array_filter($array)){ 
    //Is empty 
} 
else 
{ 
    //Is not empty 
} 

faire le travail.

Questions connexes