PHP - 使用foreach删除重复项?

时间:2017-10-02 12:35:42

标签: php foreach duplicates

我有一系列页码:

foreach($elements as $el) {
$pageno = $el->getAttribute("pageno");

echo  $pageno ;
}

可悲的是,它包含重复项。我尝试了以下代码,但它不会返回一个东西:

foreach(array_unique($elements) as $el) {
$pageno = $el->getAttribute("pageno");

echo  $pageno ;
}

如何删除重复的页码?在此先感谢:)

3 个答案:

答案 0 :(得分:4)

由于我没有您的数据结构,因此我提供了一个通用的解决方案。如果我们知道$elements的结构,可以优化这一点,但下面的内容应该适合您。

$pageNos = array();
foreach($elements as $el) {
   $pageno = $el->getAttribute("pageno");
   if(!in_array($pageno, $pageNos))
   {
       echo $pageno ;
       array_push($pageNos,$pageno);
   }
}

基本上我们只是使用一个额外的数组来存储打印值。每次我们看到一个新值时,我们都会打印它并将其添加到数组中。

答案 1 :(得分:1)

您可以创建临时的页码列表。然后将从$ elements列表中删除重复的实例:

// Create a temporary list of page numbers
$temp_pageno = array();
foreach($elements as $key => $el) {
    $pageno = $el->getAttribute("pageno");
    if (in_array($pageno, $temp_pageno)) {
        // Remove duplicate instance from the list
        unset($elements[$key]);
    }
    else {
        // Ad  to temporary list
        $temp_pageno[] = $pageno;
    }

    echo  $pageno ;
}

答案 2 :(得分:1)

除了已提供的答案外,您还可以使用array_unique()

一个非常简单的例子:

$pageno = array_unique($pageno);