Мои данные взяты из базы данных и были grouped by
day_id
, поэтому массив отсортирован по day_id
.Выходная логика html из массива
Код + образец, предоставленный, тип трудно выразить словами.
Я получил свое вдохновение от this accepted answer, но мне нужна небольшая корректировка.
$array = array(
0 => array(
'id' => '5',
'day_id' => '1',
'Foo' => array(
'id' => '28',
'name' => 'My day_id is 1'
)
),
1 => array(
'id' => '6',
'day_id' => '1',
'Foo' => array(
'id' => '29',
'name' => 'My day_id is 1'
)
),
2 => array(
'id' => '7',
'day_id' => '2',
'Foo' => array(
'id' => '30',
'name' => 'My day_id is 2'
)
),
3 => array(
'id' => '8',
'day_id' => '3',
'Foo' => array(
'id' => '31',
'name' => 'My day_is 3'
)
)
);
И мой код, чтобы вывести его:
$day = 0;
foreach($array as $a) {
// $a['day_id'] = 1, condition is true. output header once.
if($day != $a['day_id']) {
echo '<h3>The Day is ' . $a['day_id'] . '</h3>' . "\n";
}
// output the elements Foo key content.
echo $a['Foo']['name'] . "\n";
// store the current value to compare on the next iteration
// $a['day_id'] will eventually be 2, causing the condition to fire again.
$day = $a['day_id'];
}
Это выходы:
<h3>The Day is 1</h3>
My day_id is 1
My day_id is 1
<h3>The Day is 2</h3>
My day_id is 2
<h3>The Day is 3</h3>
My day_is 3
Теперь я хочу, чтобы обернуть каждый "день" в DIV, но я не могу понять, логика. Если я заменил <h3>
на открытый div, я не знаю, где положить закрытие </div>
. Мои попытки до сих пор приводили к тому, что каждый день имел div open
, но не закрытый, поэтому они были вложенными, а не отдельными.
Я не могу поставить </div><div class="day-X">
, так как в начале будет </div>
, который нарушил бы макет.
Желаемый результат:
<div class="day-1">
<h3>The Day is 1</h3>
My day_id is 1
My day_id is 1
</div>
<div class="day-2">
<h3>The Day is 2</h3>
My day_id is 2
</div>
<div class="day-3">
<h3>The Day is 3</h3>
My day_is 3
</div>
Надеется, что это имеет смысл - благодаря
проверить мой ответ – Othman
+1 для предоставления полезной PHP массив! – Cups
вам нужно сохранить дни, а затем проверить массив. Я обновил свой ответ, используя небольшой массив дней + уникальный. – Othman