2017-06-05 2 views
0

Wenn ich diesen Code verwenden:Lumen @ foreach Invalid argument

$body=$request->all(); 
     $contacts = json_decode($request->get('contacts'), true); 
     $user_contacts = array_flatten($this->_model->scan_contacts($this->_user->user_id, $contacts)); 
     $nonsync_contacts = array(); 
     foreach ($contacts as $contact) { 

      if (!in_array($contact["mobile"], $user_contacts)) { 
       $nonsync_contacts[] = $contact; 
      } 
     } 

ich diese Fehlermeldung:

ErrorException in Arr.php line 493: 
Invalid argument supplied for foreach() 

Wie vermeide ich diesen Fehler?

+0

zeigen Sie die Ausgabe dieser print_r ($ Kontakte) – Exprator

+0

Ich bin sicher, $ Kontakte ist kein Array oder es kann leer sein –

Antwort

0
$body=$request->all(); 
$contacts = json_decode($request->get('contacts'), true); 
$user_contacts = array_flatten($this->_model->scan_contacts($this->_user->user_id, $contacts)); 
$nonsync_contacts = array(); 
if(is_array($contacts)) { 
    foreach ($contacts as $contact) { 

     if (!in_array($contact["mobile"], $user_contacts)) { 
      $nonsync_contacts[] = $contact; 
     } 
    } 
} 

Check ist ein $contacts Array und nach dieser Schleife es (weil es null oder etwas anderes sein kann)

+0

$ Kontakt in print_r() Wert ist leer – falak

0

Sie sollten Ihren $contacts Wert vor foreach -ing überprüfen:

$contacts = json_decode($request->get('contacts'), true); 
$contacts = is_array($contacts) ? $contacts : []; 

Or einfach kurz vor foreach

foreach (($contacts ?: []) as $contact) 

Wenn Sie 7.0 mit PHP sind, verwenden null coalesce Operator

foreach (($contacts ?? []) as $contact) 

Wie json_decode immer null der Wert zurückgeben kann nicht aufgrund ungültiger JSON Struktur decodiert werden oder ihm codierter Daten ist tiefer als die Rekursion Grenze. Stellen Sie sicher, dass Ihr $request->get('contacts') nie ANY booleschen Wert zurückgibt.

Verwandte Themen