2012-02-20 20 views
13

Oto moja tablica ouputJak sprawdzić, czy wartość tablicy jest pusta?

Array 
(
    [1] => 1 
    [2] => 2 
    [3] => 
) 

Skąd wiem, że [3] => jest pusty?

foreach ($array as $key => $value) { 
    if (empty($value)) 
     echo "$key empty <br/>"; 
    else 
     echo "$key not empty <br/>"; 
} 

Moje wyjście pokazujące wszystko nie jest puste. Jaki jest prawidłowy sposób sprawdzania jest pusty?

+1

Może dlatego, że trzeci element to biała spacja "" ", więc nie jest pustym ciągiem znaków? Jeśli tak, spróbuj zmienić ją w 'if (trim ($ value)! = '')' ... –

+3

Aby uniknąć tych problemów, użyj var_dump() podczas drukowania wartości. Pokaże długość i nie ukryje tych pustych znaków. –

Odpowiedz

12

To działa zgodnie z oczekiwaniami, trzeci jest pusty

http://codepad.org/yBIVBHj0

Może spróbuj przyciąć jego wartość, tak na wszelki wypadek, że trzecia wartość byłaby tylko przestrzeń.

foreach ($array as $key => $value) { 
    $value = trim($value); 
    if (empty($value)) 
     echo "$key empty <br/>"; 
    else 
     echo "$key not empty <br/>"; 
} 
+2

Kodowanie lepsze niż śpiewanie .. Bardzo mi się podobało .. – floCoder

+0

@Nephil, żeby było jasne, miałem zdjęcie profilowe z Seleną Gomez :) –

4

Można użyć array_diff() i array_diff_key():

$array = array('one', 'two', ''); 
$emptyKeys = array_diff_key(array_diff($array,array()),$array); 

array_diff() wyciągi wszystkie przedmioty, które nie są takie same (a więc pomijając półfabrykatów), array_diff_key oddaje różnice w stosunku do oryginalnej tablicy.

+0

To nie działa ..php> print_r ($ tablica); Tablica ( [0] => jedna [1] => dwa [2] => ) php> $ emptyKeys = array_diff_key (array_diff ($ tablicy, Tablica()), $ macierz); php> print_r ($ emptyKeys); Array ( ) – UberNeo

18

Innym rozwiązaniem:

$array = array('one', 'two', ''); 

if(count(array_filter($array)) == count($array)) { 
    echo 'OK'; 
} else { 
    echo 'ERROR'; 
} 

http://codepad.org/zF9KkqKl

0

Spróbuj tego:

<?php 
    $data=array(
     'title' => 'Test Name Four', 
     'first_name' => '', 
     'last_name' => 'M', 
     'field_company' => 'ABC', 
     'email' => '', 
     'client_phone_number' => '', 
     'address_line_1' => '', 
     'address_line_2' => 'Address 3', 
     'address_line_3' => '', 
     'address_line_4' => '', 
     'post_code' => '', 
     ); 
    echo '<pre>'; 
    print_r($data); 
    foreach ($data as $key => $case) { 
     echo "$key => ".is_multiArrayEmpty($case)."<br>"; 
    } 
    function is_multiArrayEmpty($multiarray) { 
     if(is_array($multiarray) and !empty($multiarray)){ 
      $tmp = array_shift($multiarray); 
       if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){ 
        return false; 
       } 
       return true; 
     } 
     if(empty($multiarray)){ 
      return true; 
     } 
     return false; 
    } 
?> 
0

Oto proste rozwiązanie aby sprawdzić tablicę dla pustych wartości klucza i przekręcić kluczyk.

$a = array('string', '', 5); 

     echo array_search(null, $a); 
     // Echos 1 

Aby sprawdzić, czy tablica zawiera pustą wartość klucza. Spróbuj tego.

 $b = array('string','string','string','string','','string'); 

     if (in_array(null, $b)) { 
      echo 'We found a empty key value in your array!'; 
     } 
0

im przy moim projekcie tak dla sprawdzenia tej tablicy

dane formularza im wpis jak ten array('username' => 'john','surname' => 'sins');

public function checkArrayKeyExist($arr) { 
    foreach ($arr as $key => $value) { 
     if (!strlen($arr[$key])) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

dodaj wyjaśnienie – HaveNoDisplayName

+0

im dodano pewne wyjaśnienie – coyote34

2

można sprawdzić dla pustej tablicy za pomocą następujących czynności:

if (!empty(array_filter($array))) { 
    echo 'OK'; 
} else { 
    echo 'EMPTY ARRAY'; 
} 
+0

To działało dla mnie! –

Powiązane problemy