Deze array krijg ik uit de print_r


<?php
$theresults = array ( 
	[0] => stdClass Object ( 
		[id] => 1 
		[fruit] => Apple 
		[price] => 10 
		[total] => 7 
	) 
	
	[1] => stdClass Object ( 
		[id] => 2 
		[fruit] => Orange 
		[price] => 15 
		[total] => 23 
	) 
)

foreach ($theresults as $fruit => $values) {
  foreach ($values as $value) {
	echo $value;
  }
}
?>


Output = 1Apple1072Orange1523

Nu komt alles achter elkaar maar wil deze array uitlezen als

<?php
echo $value[fruit].' - '.$value[price].' - '.$value[total];
?>


Maar krijg een error 'Use of undefined constant fruit'.
Je bent er bijna ...

De buitenste array is een gewone numerieke array met fruit "objecten". Hiervoor gebruik je een foreach waarmee je deze één voor één behandeld:
<?php
foreach ($theresults as $fruit) { // loop door alle fruit "objecten"
echo $fruit['fruit'] . ' = ' . $fruit['price'] . '<br>'; // gebruik de fruit objecten één voor één
}
?>
(Het zijn niet echt objecten maar het zijn eigenlijk associatieve arrays).
Waar komt dit array vandaan?

Vermoeden: je gebruikt json_encode() zonder een tweede parameter met waarde true? Dit laatste zorgt er namelijk voor dat je een (volledig) associatief array terugkrijgt, en niet een array van objecten.
oh.. inderdaad zoals Thomas zegt gebruik makkelijker

<?php

$result = json_encode($json, true);

?>

Dan zal mijn voorbeeld tevens werken. Zonder die true zijn het wel echte objecten (standaard php objecten) en dan moet je met een pointer operator -> gaan werken.

<?php
foreach ($theresults as $fruit) { // loop door alle fruit "objecten"
echo $fruit->fruit . ' = ' . $fruit->price . '<br>'; // gebruik de fruit objecten één voor één
}
?>

Reageren