我在sql表中的var_dumping是这样的:
<?= "<pre>"; ?>
<?php var_dump($presents); ?>
<?= "</pre>"; ?>
结果:
[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"
}
我想获取LastTask并删除重复的
<?php foreach($presents as $present) :?>
<?php echo $present->LastTask ?>
<?php endforeach ?>
有了这个,我得到了 ...... 130 130 140 .... 是否有删除重复项的功能?
答案 0 :(得分:6)
使用foreach
为数组指定正确的值
$output = array();
foreach($presents as $present){
$output[] = $present->LastTask;
}
然后使用array_unique过滤它。
$result = array_unique($output);
正如评论中所提到的,更好的解决方案可能是更改查询,以便它使用GROUP BY
仅返回唯一的LastTask值。当且仅当查询结果中的其他信息($presents
)未在其他地方使用时,这将是一个更好的解决方案。
答案 1 :(得分:0)
f(points, axes)
甚至是这样:
function removeDuplicates($array) {
$arr = [];
foreach ($array as $obj) {
$arr[$obj->LastTask] = $obj;
}
return $arr;
}
$presents = removeDuplicates($presents);
答案 2 :(得分:0)
如果您使用的是PHP 7,则可以使用array_column
使用指定字段重新索引对象数组,这会产生删除重复项的副作用。这种方法的优点是它可以将整个对象保留为数组的一部分,以防输出中还需要其他字段:
$array = array_column($array, null, 'LastTask'));