I have this array:
JavaScript
x
"Month" => array:4 [
"Week 1" => array:1 [
"Monday" => 1
]
"Week 2" => array:3 [
"Tuesday" => 69
"Wednesday" => 17
"Friday" => 3
]
"Week 3" => array:1 [
"Thursday" => 3
]
"Week 4" => array:2 [
"Monday" => 15
"Friday" => 24
]
]
But I need to display the result as follow:
JavaScript
| Week | Monday | Tuesday | Wednesday | Thursday | Friday |
|--------|--------|---------|-----------|----------|--------|
| Week 1 | 1 | 0 | 0 | 0 | 0 |
| Week 2 | 0 | 69 | 17 | 0 | 3 |
| Week 3 | 0 | 0 | 0 | 3 | 0 |
| Week 4 | 15 | 0 | 0 | 0 | 24 |
I have tried the following but it’s showing results for more than 5 days in each week
JavaScript
<table>
<tr>
foreach ($weeks as $key => $weekcount)
{
if($key == "Monday"){ <td><?php $weekcount ?></td> }
elseif($key == "Tuesday"){ <td><?php $weekcount ?></td> }
elseif($key == "Wednesday"){ <td><?php $weekcount ?></td> }
elseif($key == "Thursday"){ <td><?php $weekcount ?></td>}
elseif($key == "Friday"){ <td><?php $weekcount ?></td> }
else {<td><?php $weekcount ?></td>}
}
</tr>
</table>
Thanks in advance for your valuable contributions
Advertisement
Answer
You should check if the given day (key) exists in the array if it is not you should write 0 to the table.
Here is a sample code:
JavaScript
<?php
$data = [
'Month' => [
'Week1' => [
'Monday' => 1
],
'Week2' => [
'Tuesday' => 69,
'Wednesday' => 17,
'Friday' => 3
],
'Week3' => [
'Thursday' => 3
],
'Week4' => [
'Monday' => 15,
'Friday' => 24
]
]
];
$weeks = $data['Month'];
?>
<table>
<tr>
<th>Week</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
</tr>
<?php
$days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
?>
<?php foreach ($weeks as $key => $week) { ?>
<tr>
<td><?php echo $key; ?></td>
<?php foreach ($days as $day) { ?>
<td><?php if (array_key_exists($day, $week)) { echo $week[$day]; } else { echo '0'; } ?></td>
<?php } ?>
<tr>
<?php } ?>
</table>
I hope I could help you!