PHP:仅显示循环中相同数据的最后数据

时间:2016-05-20 03:29:55

标签: php loops

我有像这样的php循环foreach的数据

foreach ($query->result() as $row) {
    echo $row->name;
}

loop result

如果数据相同(如果数据具有相同的值,隐藏除最后一个之外的所有数据),如何使结果仅显示结束数据而不删除其他数据,如下所示:

hope loop result

*对不起英语,这是我第一次问这里。谢谢

2 个答案:

答案 0 :(得分:1)

Online Check,这只是一个演示示例。

见下面的真实例子:

首先,您需要使用array_search获取相同数据的位置(如果存在),然后使用$arr[$pos] = '';将其删除,并且每次需要将数据导入新数组时调用$arr并在完成提取数据后,您需要使用foreach循环来打印它们。

$arr = array();
foreach($query->result() as $row){
    $pos = array_search($row->name, $arr);
    if($pos !== false)
        $arr[$pos] = '';
    $arr[] = $row->name;    
}

foreach($arr as $val){
    echo $val.'<br/>';
}

检查一下并告诉我。

答案 1 :(得分:0)

data_seek方法可能有所帮助。这假设你的数组是合理的,可以开始使用。

$rowCount = 0;
$res = $query->result();
foreach($res as $row) {
    if ($rowCount < $res->num_rows - 1) {
        // set internal pointer to next row
        $res->data_seek($rowCount + 1);
        // if the row names match, print an empty string
        // otherwise print the current name
        $nextRow = $res->fetch_row();
        if ($row->name == $nextRow->name) {
            echo "";
            // reset the internal pointer
            $res->data_seek($rowCount);
        } else {
            echo $row->name;
        }
     } else {
         echo $row->name;
     }
    // update the row count
    $rowCount += 1;
}