我在变量$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 ) )
) )
我使用以下代码循环遍历此数组
<? foreach ($details['formats']['format'] as $format)
{
echo $format['code'];
}
?>
哪个工作正常,但是,有时候数组中只有一个结果然后它看起来像这样:
[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 )
) )
不幸的是,我的每个循环都不起作用,因为它只是一个数组。怎么解决这个问题?我无法改变数组。
如果需要,我可以使用while或for循环,但我不知道如何
答案 0 :(得分:4)
解决问题的一个非常粗略的方法是在它周围折叠'if';
<?
if (isset($details['formats']['format'][0])){
foreach ($details['formats']['format'] as $format)
{
echo $format['code'];
}
} else {
echo $details['formats']['format']['code'];
}
?>
仅当结果数组是一致的并且它总是在多个结果上返回[0]时才有效。
答案 1 :(得分:0)
这应该也可以。
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'];
}
}