2010-09-27 7 views
0

Je vais avoir un moment difficile avec celui-ci, j'ai une classe qui remplit un tableau.PHP Strange situation nulle variable

Parfois, le tableau ne sera pas rempli et je veux faire un casse-case pour quand cela arrive mais je ne peux pas sembler dire quand son null! Voici le code:

$results_dev = $class->get_data_nologin("4a9d-4f41-9566-7705",$key,"Sensors"); 
    echo "something"; 
    print_r($results_dev); 

    if(is_null($results_dev)) 
    { 
     echo "thisisNULL"; 
     $counter--; 
    } 

« quelque chose » ne se laisse en écho, mais quand je print_r $ results_dev, elle imprime « null » et l'instruction if exécute jamais! J'ai aussi essayé

if(!$results_dev) 

et

if($results_dev == "null") 

et

if($results_dev == null) 

Mais il ne fonctionne toujours pas ce qui est dans exercerai la boucle si, comment pourrais-je vérifier? BTW: ma classe boucle une API et récupère un JSON, mais parfois l'URL est incorrecte dans curl afin qu'elle renvoie null. Ce qui est encore pire est après que j'ai ceci:

if($results_dev['location']) 
    { 
     echo "data".$results_dev['location']; 

Et il s'exécute même quand son null! Il imprime des "données" et absolument rien après. Code

pour get_data_nologin:

$url = 'https://api.url/'.$scf.'/'.$deviceid.'?key='.$apikey; 
    $curl_handle = curl_init(); 
    curl_setopt($curl_handle, CURLOPT_URL, $url); 
    curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl_handle, CURLOPT_COOKIEJAR, $cookie_file_path); 
    curl_setopt($curl_handle, CURLOPT_COOKIEFILE, $cookie_file_path); 
    $buffer = curl_exec($curl_handle); 
    curl_close($curl_handle); 
    if (empty($buffer)) 
    { 
     echo 'Something went wrong :('; 
    } 
    else 
    { 

      $decodedBuffer = json_decode($buffer, TRUE); 

      return $decodedBuffer; 

    } 
+0

Pouvez-vous nous montrer le code '$ class-> get_data_nologin'? –

+1

Si le résultat de l'appel de fonction est en fait la valeur 'NULL', votre code devrait fonctionner - voir http://www.ideone.com/hBYk5. –

+0

Le code json_decode peut-être ne pas envoyer une vraie valeur NULL? –

Répondre

3

utilisation isset (results_dev de $)

if(!isset($results_dev)){ 
echo "thisisNULL"; 
     $counter--; 

} 

Avec de nouvelles entrées, cela peut être la solution:

if(strtolower($results_dev) == 'null'){ 
    echo "thisisNULL"; 
      $counter--; 

} 
+0

Merci d'avoir répondu, isset ($ results_dev) ne déclenche rien non plus –

+0

Voir mon édition ci-dessus et l'utiliser comme ça .. voir si cela fonctionne – Stewie

+1

Si '$ class-> get_data_nologin' dans le code OP retourne un réel' NULL 'value,' is_null' devrait fonctionner aussi bien que 'isset' ... –