Pagina 1 din 1

Invalid argument supplied for foreach() in clasa PHP

Scris: Joi Mai 24, 2018
de sterica
Salutare,

Am urmatoarea clasa:

Cod: Selectaţi tot

class getTest {
public $prop1;
public $prop2;

function fnc1 ($argument){
	try {
		$arr1 = array();
		.....
		
		$this->prop1 = $arr1;
		
////////// $arr1 arata cam asa:
fnc1 Object
(		
	[prop1] => Array
		(
		[0] => Array
			(
			[id] => 1,
			[name] => Nume
			)
		....
		)
	[prop2] =>
)		
//////////////////////
            	$conn = null;
	}
	catch($e){
	...
	}
}

}

$vartest = new getTest;
$vartest -> fnc1($conn);
$vartest -> prop1;

$demo  = null;

foreach ($vartest as $item=>$val){
	foreach ($val as $v){
	$demo  .= "<option value='".$v['id']."'>".$v['name']."</option>";
	}
}
Dupa executia codului, foreach-ul returneaza corect valorile insa imi apare pe linia de cod cu al doilea foreach:

Cod: Selectaţi tot

Warning: Invalid argument supplied for foreach()
In arra1 imi este preluat si numele proprietatii prop2 si nu inteleg de ce.

Daca in clasa getTest elimin proprietatea public $prop2; nu imi mai returneaza acel warning, insa am nevoie de acea proprietate pentru ca clasa va mai avea metode.

De ce imi apare acel warning si cum il pot elimina?

Multumesc!

Invalid argument supplied for foreach() in clasa PHP

Scris: Joi Mai 24, 2018
de MarPlo
Salut
In codul tau, $vartest reprezinta obiectul clasei getTest (cu proprietati si metode in el), nu un array /obiect cu structura fixa care sa fi parcus cu doua foreach().
- Cand se parcurge obiectul clasei, asa cum e la tine, ajunge la proprietati ale caror valori nu e un array care sa fie parcurs de al doilea foreach().

Daca ceea ce vrei e sa parcurgi array-ul din proprietatea $prop1, poti face asa:

Cod: Selectaţi tot

foreach ($vartest->prop1 as $item=>$val){
  foreach($val as $v){
    $demo  .="<option value='".$v['id']."'>".$v['name']."</option>";
  }
}

Invalid argument supplied for foreach() in clasa PHP

Scris: Vin Mai 25, 2018
de sterica
Am inteles, multumesc mult de explicatie si de ajutor!