不要检索重复的值

时间:2015-02-05 06:17:33

标签: php

这里我有一个从db中检索值的循环。我的问题是我想跳过重复的DATE值,这段代码完美无缺,但是  DATE值显示给我只想要DATE显示的所有文章  一次。

例如:

DATE: 5-2-2015
article 1   
DATE: 5-2-2015
article 2
DATE: 4-2-2015
article 3

这是我的代码显示的方式

但我想这样

DATE: 5-2-2015
article 1   
article 2
DATE: 4-2-2015
article 3




            <?php
            $postResults = posts();
            foreach ($postResults as $postResult) 
            {
                $date = strtotime($postResult['post_added_time']);
                echo $date = date( 'j M Y', $date);
                ?>
                <?php 
                if ($postResult['post_university'] == 'JNTU HYDERABAD')
                {
                ?>
                    <div class="posts"><img class="arrow" src="<?php echo $site['config']['themeUrl'];?>/assets/images/arrow.GIF"/><a target="_blank" class="green" href="<?php echo $postResult['post_slug']; ?>"><?php echo $postResult['post_university'] . " : " . $postResult['post_title'] ;?></a>
                        <?php 
                        if (strtotime($postResult['post_added_time']) > strtotime('-3 days')) 
                        {
                        ?>
                            <span class="new"></span>
                        <?php
                        }
                        ?>
                    </div>
                <?php
                }
            }
            ?>

3 个答案:

答案 0 :(得分:0)

您可以尝试以下查询。

SELECT distinct date,* FROM " . POSTS . " WHERE status = ? ORDER BY pid DESC

答案 1 :(得分:0)

$new = array ();
        $postResults = array (
                array (
                        'post_added_time' => '2015-01-01',
                        'post_title' => 'title 1' 
                ),
                array (
                        'post_added_time' => '2015-01-02',
                        'post_title' => 'title 2' 
                ),
                array (
                        'post_added_time' => '2015-01-03',
                        'post_title' => 'title 3' 
                ),
                array(
                        'post_added_time' => '2015-01-03',
                        'post_title' => 'title 4'
                ),
        );

        foreach ( $postResults as $postResult ) {
            $date = $postResult ['post_added_time'];
            $new [$date] [] = $postResult;
        }

        echo "<pre>";
        print_r($new);
        die;

它将打印:

    Array
(
    [2015-01-01] => Array
        (
            [0] => Array
                (
                    [post_added_time] => 2015-01-01
                    [post_title] => title 1
                )

        )

    [2015-01-02] => Array
        (
            [0] => Array
                (
                    [post_added_time] => 2015-01-02
                    [post_title] => title 2
                )

        )

    [2015-01-03] => Array
        (
            [0] => Array
                (
                    [post_added_time] => 2015-01-03
                    [post_title] => title 3
                )

            [1] => Array
                (
                    [post_added_time] => 2015-01-03
                    [post_title] => title 4
                )

        )

)

您可以使用此$ new数组根据您的要求打印值。

答案 2 :(得分:0)

我通常这样做

//initialise date first
date = '';

for loop{

    //Check for condition as date from loop is not equal to date in loop
    if(date != date from loop){
        date = date from loop
        echo date;
    }

rest of the code of displaying article details will be as below
...


}

希望这会对你有所帮助。