2014-01-09 2 views
2

я получил следующий массив, хранящийся в переменной $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) 
        )) 

К сожалению, мой для каждого цикла не работает, потому что это только один массив. Как это можно решить? Я не могу изменить массив.

можно использовать во время или петли, если это требуется, но я понятия не имею, как

+0

Почему массив такой? Вы должны быть согласованы в количестве измерений. Если есть только один формат, сделайте его массивом с одним элементом, не вытаскивайте его из массива. – Barmar

ответ

4

очень грубый метод подхода к проблеме будет просто сложить «если» вокруг него;

<? 
if (isset($details['formats']['format'][0])){ 
    foreach ($details['formats']['format'] as $format) 
    { 
     echo $format['code']; 
    } 
} else { 
    echo $details['formats']['format']['code']; 
} 
?> 

Это работает только в том случае, если массив результатов согласован и он всегда будет возвращать [0] для нескольких результатов.

+0

Как это работает, поскольку массив с одним элементом все еще является массивом? – Drumbeg

+0

Это работает, [0] будет присутствовать только в нескольких результатах. – Fyntasia

+0

Отлично, много, спасибо. – AgeDeO

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']; 
    } 
} 
Смежные вопросы