【发布时间】:2015-08-28 17:23:23
【问题描述】:
我正在使用一个 API,它可以为员工带回假期数据。数据包含已批准的假期请求以及取消的假期请求。我面临的问题是,取消的假期请求显示为以下格式的重复条目:
stdClass Object
(
[leave_requests] => Array
(
[0] => stdClass Object
(
[employee] => stdClass Object
(
[id] => 30771
)
[reviewed_by] => stdClass Object
(
[id] => 22734
)
[reason] =>
[type] => Holiday
[deducted] => 1.0
[cancelled] =>
[id] => 626214
[start_date] => 2015-08-20
[half_start] =>
[half_start_am_pm] =>
[end_date] => 2015-08-20
[half_end] =>
[half_end_am_pm] =>
[action] => request
[status] => approved
[notes] =>
[created_at] => 2015-08-06T21:55:12+01:00
[updated_at] => 2015-08-07T08:26:07+01:00
)
[1] => stdClass Object
(
[employee] => stdClass Object
(
[id] => 30771
)
[reviewed_by] => stdClass Object
(
[id] => 22734
)
[reason] =>
[type] => Holiday
[deducted] => 1.0
[cancelled] =>
[id] => 632745
[start_date] => 2015-08-20
[half_start] =>
[half_start_am_pm] =>
[end_date] => 2015-08-20
[half_end] =>
[half_end_am_pm] =>
[action] => cancel
[status] => approved
[notes] =>
[created_at] => 2015-08-12T17:50:32+01:00
[updated_at] => 2015-08-12T17:53:46+01:00
)
)
)
理想情况下,数据将被格式化,以便使用取消的属性,我可以过滤掉它(开发人员已要求这样做)。我想做的是删除两个具有相同 start_date 和 end_date 的条目。
目前我可以使用此功能删除重复项
function super_unique($array)
{
$newArr = array();
foreach ($array as $val) {
$newArr[$val['startDate']] = $val;
}
$array = array_values($newArr);
return $array;
}
这有几个问题,因为我仍然留下一个条目,因为假期请求已被取消,我不希望它们中的任何一个出现在数据中。过滤数据以排除所有具有“取消”操作属性的元素仍然会留下原始请求。
另一个问题是上述函数仅基于 start_date 过滤,而不是 start_date 和 end_date。
查看了this SO question 上的 cmets,以及 PHP 文档页面上的 cmets 中的 array_values 和 array_unique。
【问题讨论】:
标签: php arrays multidimensional-array