Я думаю, что мой массив правильно введен, но вывод его в таблицу затруднен. Я не знаю, где я не прав.
Вот мой код:
<?php
error_reporting(E_ALL);
//days - Sunday thru Saturday
$daysOfTheWeek = array(0 => 'Sunday', 1 => 'Monday', 2 => 'Tuesday', 3 => 'Wednesday', 4 => 'Thursday', 5 => 'Friday', 6 => 'Saturday');
//sleep schedule
$sleepSchedule = array( 0 => 'go to sleep early', 1 => 'go to sleep on time', 2 => 'go to sleep on time', 3 => 'go to sleep on time',
4 => 'go to sleep on time', 5 => 'stay up late', 6 => 'stay up late');
//the chore list
$thingsToDo = array(
0 => array('Cleanup the house', 'Do dishes', 'Weekly Quiz!'), //row 1
1 => array('Grocery shop'), //row 2
2 => array('Walk at the park', 'Read the weekly PHP chapter', 'Take out the food!', 'Cook dinner!'), //row 3
3 => array('Homework due!', 'Ice cream sundae!'), //row 4
4 => array('Walk the dog'), //row 5
5 => array('Excercise', 'Vist Family'), //row 6
6 => array('Watch my favorite Tv show', 'Shopping!', 'Make take out food!', 'Relax!!') //row 7
);
echo '<tr>';
echo '<th>Days of the week</th>';
for ($i = 0; $i < sizeof($daysOfTheWeek); $i++) {
echo "<td>{$daysOfTheWeek[$i]}</td>";
}
echo '</tr>';
echo '<tr>';
echo '<th>Sleep Schedule</th>';
for ($i = 0; $i < sizeof($sleepSchedule); $i++) {
echo "<td>{$sleepSchedule[$i]}</td>";
}$thingsToDo = array(
0 => array('Cleanup the house', 'Do dishes', 'Weekly Quiz!'), //row 1
1 => array('Grocery shop'), //row 2
2 => array('Walk at the park', 'Read the weekly PHP chapter', 'Take out the food!', 'Cook dinner!'), //row 3
3 => array('Homework due!', 'Ice cream sundae!'), //row 4
4 => array('Walk the dog'), //row 5
5 => array('Excercise', 'Vist Family'), //row 6
6 => array('Watch my favorite Tv show', 'Shopping!', 'Make take out food!', 'Relax!!') //row 7
);
У меня все хорошо до тех пор, пока на каждый день не встанет пуля. Тогда у меня есть код эха:
echo '<th>ToDo list</th>';
$sizeOfThingsToDo = sizeof($thingsToDo);
for ($i = 0; $i < $sizeOfThingsToDo; $i++) {
$list = $thingsToDo[$i];
echo '<ul><td><li>';
echo $list[0].'<br>';
echo $list[1].'<br>';
echo $list[2].'<br>';
echo $list[3].'<br>'; echo '</ul></td></li>';
Вы смешиваете элементы таблицы (<th>
, <td>
) со списком (<ul>
, <li>
). Вот как вы можете делать то, что вы хотите в виде списка:
echo '<b>ToDo list</b>';
$sizeOfThingsToDo = sizeof($thingsToDo);
echo '<ul>';
for ($i = 0; $i < $sizeOfThingsToDo; $i++) {
$list = $thingsToDo[$i];
echo '<li>List #'.$i.':';
echo ' <ul>';
$sizeOfList = sizeof($list);
for ($j = 0; $j < $sizeOfList; $j++) {
echo ' <li>'.$list[$j].'</li>';
}
echo ' </ul>';
echo '</li>';
}
echo '</ul>';
РЕДАКТИРОВАТЬ: так же, как ряд вашей таблицы
echo '<tr><th>ToDo list</th>';
$sizeOfThingsToDo = sizeof($thingsToDo);
for ($i = 0; $i < $sizeOfThingsToDo; $i++) {
$list = $thingsToDo[$i];
echo ' <td>';
echo ' <ul>';
$sizeOfList = sizeof($list);
for ($j = 0; $j < $sizeOfList; $j++) {
echo '<li>'.$list[$j].'</li>';
}
echo ' </ul>';
echo ' </td>';
}
echo '</tr>';
REEDIT: добавлены маркеры.
Я думаю, что вы ищете что-то вроде этого:
echo '<ul>';
foreach($thingsToDo as $innerArray) {
echo "<li>";
foreach($innerArray as $k => $v)
echo $v . "<br />";
echo "</li>";
}
echo '</ul>';
Или, если вы хотите, чтобы элемент был конечной точкой, используйте это:
echo "<ul>";
foreach($thingsToDo as $innerArray) {
foreach($innerArray as $k => $v)
echo "<li>" . $v . "</li>";}
echo "</ul>";
Я надеюсь, что приведенный ниже код служит вашей цели:
echo '<b>ToDo list</b>';
$sizeOfThingsToDo = sizeof($thingsToDo);
echo '<table><tr><th>Day Of Week</th><th>Things To Do</th></tr>';
foreach($thingsToDo as $dayNumber => $listThings)
{
echo '<tr>';
echo '<td>'.$daysOfTheWeek[$dayNumber ].'</td><td><ul>';
foreach($listThings as $thingDetails)
{
echo '<li>'.$thingDetails.'</li>';
}
echo '</ul></td></tr>';
}
echo '</table>';