在php中通过条件删除数组中的重复元素[已关闭]

r7knjye2  于 2023-02-15  发布在  PHP
关注(0)|答案(1)|浏览(132)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

21小时前关门了。
这篇文章是编辑和提交审查2小时前。
Improve this question
输入

^ array:1 [
  "list" => array:4 [
    0 => array:2 [
      "refID" => "aDf30"
      "start_date" => "2022-10-27"
    ]
    1 => array:2 [
      "refID" => "Xcv01"
      "start_date" => "2022-10-28"
      "end_date"   => "2022-11-29"

    ]
    2 => array:2 [
      "refID" => "Xcv01"
      "start_date" => "2022-10-29"
      "end_date"   => "2022-11-29"
    ]
    3 => array:2 [
      "refID" => "Xcv01"
      "start_date" => "2022-10-31"
    ]
  ]
]

我们必须尊重这些条件:检查它们是否具有与我们必须测试的日期相同的refID
1.如果它们具有相同的start_date,但没有end_date,则取第一个元素
1.如果它们具有不同的start_date,则我们采用具有最近的start_date的元素
1.如果它们具有相同start_date且其中一个具有end_date,则添加两个测试:

  • 如果**end_date****〉= now()**取这个元素
  • 如果end_date****〈now()则取没有end_date的元素

这是我的代码myCode,但是当添加第三个测试用例时,它返回了第一个元素,它们匹配重复的情况。请给予我你的建议。谢谢

f4t66c6m

f4t66c6m1#

enter code here function array_unique_key($array, $key) { 
$tmp = $key_array = array(); 
$i = 0; 

foreach($array as $val) { 
    if (!in_array($val[$key], $key_array)) { 
        $key_array[$i] = $val[$key]; 
        $tmp[$i] = $val; 
    } 
    $i++; 
} 
return $tmp;

}

相关问题