2017-02-02 3 views
0

PHP-Version 5.3.1 mit codeigniter 2.0.2Der Versuch, für foreach geliefert Nicht-Objekt CodeIgniter und Invalid argument zu bekommen()

mir helfen, ich habe Fehler wie diese Eigenschaft:

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object and Invalid argument supplied for foreach() 

Filename: controllers/login.php 

Line Number: 20 

Controller
parent::__construct(); 
    $this->load->model('option_m'); 
    $option = $this->option_m->get_by(array('nama_opsi' => 'store_option')); 
    foreach (unserialize($option->value_opsi) as $key => $val) { 
     $this->data->$key = $val; 
    } 
    $this->template->use_asset()->set_judul('Form Login')->set_css('login'); 

    $this->data->metadata = $this->template->get_metadata(); 
    $this->data->judul = $this->template->get_judul(); 
} 

in dem erhabenen Text, Zeilennummer 20 ist, aber im nicht sicher:

foreach (unserialize($option->value_opsi) as $key => $val) { 
$this->data->$key = $val; 
+0

in Sublime Text die Zeilennummer 20: foreach (unserialize ($ Option-> value_opsi) als $ key => $ val) { aber im nicht sicher – Bernando

+2

Mögliche Duplikat von [Invalid argument für foreach geliefert()] (http://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) –

+0

Was ist der Rohwert von '$ option-> value_opsi'? – Pipe

Antwort

0

Versuchen Sie, unserialize($option->value_opsi) in einer Zwischenvariablen zu speichern und auszudrucken. Ich wette, das ist kein Array-Format, das foreach akzeptieren kann.

0

Überprüfen Sie zuerst, ob die Option $ gültig ist, bevor Sie sie verwenden, andernfalls versuchen Sie, auf Werte von einer ungültigen Rückgabe zuzugreifen. Angenommen, Ihre Abfrage hat $ option = false zurückgegeben, dann haben Sie versucht, auf ein Feld wie $ option-> value zuzugreifen, dann erhalten Sie den gleichen Fehler.

Ich schlage vor, Sie eine if-Anweisung zu setzen, bevor es mit:

if($option) { foo; bar; ...} 

Und verwenden Sie unserialize nur, wenn Option- $> value_opsi eine serialisierte Wert ist.

Ich hoffe, es hat geholfen.

Verwandte Themen