I have got the following array stored in the variable $details
:
[formats] => Array (
[format] => Array (
[0] => Array (
[formatId] => 1
[code] => High
[price] => Array (
[0] => 0.00
[1] => 0.00
[2] => 0.00
[3] => 0.00
[4] => 0.00 ) )
[1] => Array (
[formatId] => 2
[code] => Med
[price] => Array (
[0] => 0.00
[1] => 0.00
[2] => 0.00
[3] => 0.00
[4] => 0.00 ) )
) )
and I use the following code to loop trough this array
<? foreach ($details['formats']['format'] as $format)
{
echo $format['code'];
}
?>
Which works fine, but then, sometimes there is only one result in the array and then it looks like this:
[formats] => Array (
[format] => Array (
[formatId] => 1
[code] => High
[price] => Array (
[0] => 0.00
[1] => 0.00
[2] => 0.00
[3] => 0.00
[4] => 0.00 )
) )
Unfortunally my for each loop does not work then, because it is only a single array. How can this be solved? I cannot change the array.
I can use while or for loops if that is required, but I have no idea how
A very crude method of approaching the problem would be to just fold an 'if' around it;
<?
if (isset($details['formats']['format'][0])){
foreach ($details['formats']['format'] as $format)
{
echo $format['code'];
}
} else {
echo $details['formats']['format']['code'];
}
?>
This only works if the result array is consistant and it will always return [0] on multiple results.
This should work as well.
if ( is_array($details['formats']['format']) && array_key_exists("code", $details['formats']['format']) ) {
echo $details['formats']['format']['code'];
} else if ( is_array( $details['formats']['format'] ) {
foreach ($details['formats']['format'] as $format)
{
echo $format['code'];
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.