Disons que j'ai un tableau qui ressemble à ceci:

Array
(
    [0] => 
    [1] => 2017-01-01 00:00:00
)

Comment puis-je vérifier dynamiquement si la zone a des valeurs vides?

0
user4671351 27 janv. 2017 à 01:46

4 réponses

Meilleure réponse

Vous pouvez utiliser empty():

$array = [
  null, 
  '2017-01-01 00:00:00',
  '',
  [],
  # etc..
];

foreach($array as $key => $value){
  if(empty($value)){
    echo "$key is empty";
  }
}

Consultez le tableau de comparaison des types pour plus d'informations.

0
Xorifelse 26 janv. 2017 à 23:08

Quelque chose comme

// $array = [ ... ];

$count = count($array);

for( $i=0; $i<=$count; $i++){
    if( $array[$count] == 0 ){
         // Do something
    }
}
0
aesede 26 janv. 2017 à 23:10

Pour cela, vous avez plus de possibilité:

  1. Vous pouvez utiliser la fonction array_filter sans sans deuxième paramètre

    array_filter([ 'empty' => null, 'test' => 'test']);

Mais pour cela soyez prudent car cela supprime toutes les valeurs qui sont égales à false (null, false, 0)

  1. Vous pouvez utiliser la fonction array_filter avec la fonction de rappel:

    function filterEmptyValue( $value ) {
        return ! empty( $value );
    }
    
    array_filter([ 'empty' => null, 'test' => 'test'], 'filterEmptyValue');
    
  2. Vous pouvez utiliser foreach ou pour:

    $array = ['empty' => null, 'test' => 'test'];
    
    foreach($array as $key => $value) {
        if(empty($value)) {
            unset($array[$key]);
        }
    }
    
    $array = [null, 'test'];
    
    for($i = 0; $i < count($array); $i++){
        if(empty($array[$i])) {
            unset($array[$i]);
        }
    }
    

    Ce sont des exemples, vous devez donc réfléchir et trouver une bonne solution à votre problème

0
Przemek Dziadek 26 janv. 2017 à 23:35

Vous pouvez voir s'il contient des valeurs vides en comparant les valeurs du tableau au résultat de array_filter (qui supprime les valeurs vides.)

$has_empty_values = $array != array_filter($array);
0
Don't Panic 26 janv. 2017 à 23:30