PHP многомерный массив - цикл foreach, показывающий последний массив
У меня есть многомерный массив следующим образом:
$worksheet = array(
'sheet 1' => array(
'#1 sheet 1',
' #2 sheet 1',
'#3 sheet 1'
),
'sheet 2' => array(
'#1 sheet 2',
'#2 sheet 2'
),
'sheet 3' => array(
'#1 sheet 3',
'#2 sheet 3'
)
);
Затем я запускаю код PHP, как показано ниже:
foreach($worksheet as $ws=>$value)
echo $ws.'<br/>';
{
foreach($value as $sheet=>$ivalue)
{
echo $ivalue.'<br/>';
}
}
Выше код будет генерировать только последний массив, как следует:
лист 1, лист 2, лист 3, № 1 лист 3, № 2 лист 3
что случилось с моим:
№ 1 лист 1, № 2 лист 1, № 3 лист 1, № 1 лист 2, № 2 лист 2.
3 ответа
Решение
Исправьте ваш синтаксис. echo
не внутри {}
S, как вы собираетесь. В противном случае PHP будет предполагать, что вы просто намереваетесь сделать эхо, и не поймет, что вы хотите сделать внутренний цикл.
Чинить:
foreach($worksheet as $ws=>$value)
{
echo $ws.'<br/>';
Потому что ты сделал ошибку. Вторая и третья строки вашего кода перевернуты. Код должен быть таким:
foreach($worksheet as $ws=>$value)
{
echo $ws.'<br/>';
Таким образом, ваш код зацикливается на внешнем foreach
через эхо, а затем в "разделе", заключенном в скобки {
, делает еще один цикл (внутренний foreach
).