簡體   English   中英

如何在 PHP 中的數據庫中通過 foreach 循環顯示相同的日期記錄

[英]How can I display same date record through foreach loop from database in PHP

我想使用 foreach 循環從數據庫中顯示相同的日期記錄。

假設我在數據庫中有以下記錄。

Id          Name         created_date

1           XYZ         2020-12-08 13:24:20

2           YUZ         2020-12-04 11:40:04

3           TYZ         2020-12-03 11:54:58

4           SDD         2020-12-03 07:19:19  

在上表中,同一日期“ 2020-12-03 ”中有 2 條記錄,所以我想在表中顯示如下格式的相同日期記錄。

Tuesday

 - 2020-12-08

Friday

 - 2020-12-04

Thursday

 - 2020-12-03
 - 2020-12-03

我在 PHP 腳本下面使用過,但它不是我需要的顯示,它只顯示單獨的 2 行相同日期。

<table>
<?
if(isset($getUsers) && !empty($getUsers)){
        foreach ($getUsers as $key => $value) {
            $date =$value['created_date'];

        $day ='';
        Switch(date('w',strtotime($date))){
                    Case 0:
                        $day= 'Sunday';
                        break;
                    Case 1:
                        $day= 'Monday';
                        break;
                    Case 2:
                        $day= 'Tuesday';
                        break;
                    Case 3:
                        $day= 'Wednesday';
                        break;
                    Case 4:
                        $day= 'Thursday';
                        break;
                    Case 5:
                        $day= 'Friday';
                        break;
                    default:
                        $day=  'Saturday';

                }
            ?>
          <thead>
            <tr >
              <th scope="col" colspan="4"><?php echo $day; ?></th>
            </tr>
          </thead>
          <tbody>           
          <tr>
              <th scope="row" colspan="4"><?php echo date('Y-m-d', strtotime($value['created_date'])) .'-'.  $value['name']; ?></th>
            </tr>
          </tbody>
            <?php
        }
     
    }
    ?>
</table>

您應該使用以下相關數據 hashmap 您的日子:

    $daysMap = [];
    foreach ($getUsers as $key => $value) {
         $date =$value['created_date'];
    
         $day ='';
         Switch(date('w',strtotime($date))){
              Case 0:
                  $day= 'Sunday';
              break;
              Case 1:
                  $day= 'Monday';
              break;
              ...
        }
    
$daysMap[$day][] = date('Y-m-d', strtotime($value['created_date'])) .'-'.  $value['name'];
    
    }
                

稍后,循環$daysMap並打印每一天及其日期。

我將使用單獨的循環並創建一個數組,使用日期作為鍵:

<table>
<?
if(isset($getUsers) && !empty($getUsers)){
    // first create the array to ensure the order of days will be respected
    $days = [
        'Sunday' => [],
        'Monday' => [],
        'Tuesday' => [],
        'Wednesday' => [],
        'Thursday' => [],
        'Friday' => [],
        'Saturday' => []
    ];

    // add the datas in the corresponding day in the array
    foreach ($getUsers as $value) {
        $date =$value['created_date'];
        $dayOfWeek = date('w',strtotime($date));
        $days[$dayOfWeek][] = $value;
    }

    // loop the array and display its content
    foreach ($days as $day => $values) {
        ?>
        <thead>
            <tr >
                <th scope="col" colspan="4"><?php echo $day; ?></th>
            </tr>
        </thead>
        <tbody>
            <?php
            // Loop the sub array containing the values
            foreach ($values as $value) {
            ?>
            <tr>
                <th scope="row" colspan="4"><?php echo date('Y-m-d', strtotime($value['created_date'])) .'-'.  $value['name']; ?></th>
            </tr>
            <?php
            }
            ?>
        </tbody>
        <?php
    }
}
?>
</table>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM