помогите с датами и петлями php - PullRequest
0 голосов
/ 23 июля 2010

Здравствуйте, у меня сейчас есть этот скрипт PHP

        <?php if($purchase_dates != FALSE){?>
                        <?php foreach($purchase_dates as $id=>$outer_value) { ?>
                        <!-- Output the date here -->
                          <!-- Start Purchase table -->
                          <?
                          $date = strtotime($outer_value['date_purchased']);
                          $data = date('F jS Y', $date);
                          ?>

                          <h3></h3>
                          <!-- Start inner loop -->
                          <?php foreach($purchases as $id=>$inner_value) { ?>
                           <?php if($inner_value['date_purchased'] == $outer_value['date_purchased']) { ?>
                                <div class="row"> 
                                    <ul> 
                                        <li class="id"><a href="/search/cv/<?=$inner_value['code'];?>"><?=$inner_value['code'];?></a></li> 
                                        <li class="name"><a href="/search/cv/<?=$inner_value['code'];?>"><?=$inner_value['firstname'];?> <?=$inner_value['surname'];?></a></li>
                                        <li class="download"><a href="">Download PDF</a></li>
                                        <div class="disp"> 
                                            <li class="location"><?=$inner_value['city'];?></li> 
                                            <li class="status"><?=$job_status[$inner_value['job_status']];?></li> 
                                            <li class="education"><?=$education_types[$inner_value['education_level']]['nice_name'];?></li>
                                            <li class="role">
                                                <?php
                                                $out = array();
                                                if($inner_value['is_contract'] == 'Y') $out[]="Contract";
                                                if($inner_value['is_permanent'] == 'Y') $out[]="Permanent";
                                                if($inner_value['is_temporary'] == 'Y') $out[]="Temporary";
                                                echo implode(", ",$out);
                                                ?>
                                            </li> 

                            <li class="salary"><?=$salaries[$inner_value['expected_salary_level']]['nice_name'];?></li> 
                                        </div>
                                    </ul> 
                                </div>
                           <?php  } ?>
                          <?php  } ?>
                          <!-- End inner loop -->
                        <?php } ?>
                        <?php }?>
                        <!-- End Outer Tree Loop -->

Это создает нечто, похожее на это,

22 июля
Purchase1

22 июля
Покупка 2

18 июля
Покупка 3

18 июля
Покупка 4

У меня вопрос: я хочу сгруппировать все покупки, совершенные в тот же день, и если эта дата является текущей, я хочу заменить «23 июля» на «Сегодняшние покупки»

Я уже использую groupby в своем SQL

1 Ответ

0 голосов
/ 23 июля 2010

Самый простой способ сгруппировать по дате - это добавить дополнительное измерение в ваши массивы, чтобы все записи, принадлежащие одной и той же дате, находились в одном и том же подмассиве. Тогда вам просто нужно сделать цикл дважды:

foreach($data as $purchase_date => $purchases){
    // Print date
    foreach($purchases as $id=>$inner_value){
        // Print purchase
    }
}

Похоже, что вы используете метки времени Unix для дат, поэтому вы можете просто использовать date () для удаления часов, минут и секунд:

if( date('Y-m-d')==date('Y-m-d', $purcharse_date) ){
    // Today
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...