我有一个形式如下的数组:
class anim {
public $qs;
public $dp;
public $cg;
public $timestamp;
}
$animArray = array();
$myAnim = new anim();
$myAnim->qs = "fred";
$myAnim->dp = "shorts";
$myAnim->cg = "dino";
$myAnim->timestamp = 1590157029399;
$animArray[] = $myAnim;
$myAnim = new anim();
$myAnim->qs = "barney";
$myAnim->dp = "tshirt";
$myAnim->cg = "bird";
$myAnim->timestamp = 1590133656330;
$animArray[] = $myAnim;
$myAnim = new anim();
$myAnim->qs = "fred";
$myAnim->dp = "tshirt";
$myAnim->cg = "bird";
$myAnim->timestamp = 1590117032286;
$animArray[] = $myAnim;
我该如何创建一个新的数组,仅包含 $animArray 中不重复的项(以及重复项中的最新条目),其中重复定义为: $myAnim->dp 的值与另一个数组元素的 $myAnim->dp 相同,且第一个和第二个数组元素的 $myAnim->cg 均相等。
在上面的示例中,只有第一个元素符合此定义。
我希望有一种优雅的解决方案。我查看了 PHP 手册中的所有数组函数但未找到可行方法。
我可以循环遍历每个数组元素,检查 $myAnim->dp 是否与另一个数组元素的 $myAnim->dp 相同,将匹配项保存到新数组中,然后循环遍历该新数组,检查其 $myAnim->cg 是否与该新数组中任何其他元素的 $myAnim->cg 相匹配。
更优雅的解决方案应该允许我更改哪些键值对的组合确定是否有重复,而无需大量重构代码。
这样的解决方案存在吗?
谢谢帮助这位新手 :)