如何在PHP中删除foreach中的重复项

Gre*_*try 1 php

我从一个sql表中var_dumping是这样的:

<?= "<pre>";  ?>
        <?php var_dump($presents); ?>
<?= "</pre>";  ?>
Run Code Online (Sandbox Code Playgroud)

结果:

  [40]=>
  object(stdClass)#44 (7) {
    ["PersNr"]=>
    string(4) "101"
    ["Name"]=>
    string(7) "John"
    ["Typ"]=>
    string(1) "1"
    ["StartTime"]=>
    string(8) "11:43:52"
    ["LastTask"]=>
    string(3) "130"
  }
  [41]=>
  object(stdClass)#45 (7) {
    ["PersNr"]=>
    string(4) "102"
    ["Name"]=>
    string(6) "Maria"
    ["Typ"]=>
    string(1) "1"
    ["StartTime"]=>
    string(8) "08:01:04"
    ["LastTask"]=>
    string(3) "130"
  }
  [42]=>
  object(stdClass)#46 (7) {
    ["PersNr"]=>
    string(4) "103"
    ["Name"]=>
    string(9) "Jane"
    ["Typ"]=>
    string(1) "1"
    ["StartTime"]=>
    string(8) "06:54:15"
    ["LastTask"]=>
    string(3) "140"
  }
Run Code Online (Sandbox Code Playgroud)

我想获取LastTask并删除副本

<?php foreach($presents as $present) :?>
    <?php echo $present->LastTask ?>
<?php endforeach ?>
Run Code Online (Sandbox Code Playgroud)

有了这个我得到... 130 130 140 ....是否有删除重复的功能?

fro*_*ope 6

使用您foreach为数组分配正确的值

$output = array();
foreach($presents as $present){
    $output[] = $present->LastTask;
}
Run Code Online (Sandbox Code Playgroud)

然后使用array_unique来过滤它.

$result = array_unique($output);
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,更好的解决方案可能是更改查询,因此它使用a GROUP BY仅返回唯一的LastTask值.当且仅当查询结果($presents)中的其他信息未在其他地方使用时,这将是更好的解决方案.