我有一个数组,如果某些规格相同,我想将某些项目分组。
这是我的初始数组:
Array (
[0] => Array (
[NDC_Date] => 2012-12-12
[NDC_Type] => Item
[NDC_Item] => Extra Bed
[NDC_Rate] => 0.00
[NDC_Taxes] => 0
[NDC_TaxesName] => 0
[NDC_Quantity] => 1
[NDC_Status] => Charged
)
[1] => Array (
[NDC_Date] => 2013-02-02
[NDC_Type] => Night
[NDC_Item] => Night
[NDC_Rate] => 1000.00
[NDC_Taxes] => 0
[NDC_TaxesName] => 0
[NDC_Quantity] => 10
[NDC_Status] => Charged
)
[2] => Array (
[NDC_Date] => 2013-02-03
[NDC_Type] => Night
[NDC_Item] => Night
[NDC_Rate] => 1000.00
[NDC_Taxes] => 0
[NDC_TaxesName] => 0
[NDC_Quantity] => 2
[NDC_Status] => Charged
)
)
因此,目标是在以下情况下将项目分组到此数组中:
NDC_Rate
相等NDC_Type
相等NDC_Taxes
相等NDC_TaxesName
相等NDC_Quantity
相等NDC_Status
相等所以我应该比较每个项目以了解它。
其实我的代码就是这个。
$result = [];
foreach ($array as $item) {
$k = $item['NDC_Item'];
if (!isset($result[$k])) {
$result[$k] = $item;
} elseif (
($i = $result[$k]) &&
$item['NDC_Rate'] === $i['NDC_Rate'] &&
$item['NDC_Type'] === $i['NDC_Type'] &&
$item['NDC_Taxes'] === $i['NDC_Taxes'] &&
$item['NDC_TaxesName'] === $i['NDC_TaxesName'] &&
$item['NDC_Quantity'] === $i['NDC_Quantity'] &&
$item['NDC_Status']=== $i['NDC_Status']
) {
$current_dates = explode(', ', $result[$k]['NDC_Date']);
$last_date = end($current_dates);
if(date('Y-m-d', strtotime("{$last_date} +1 day")) === $item['NDC_Date']) {
$result[$k]['NDC_Id'] .= ','. $item['NDC_Id'];
$result[$k]['NDC_Date'] .= ','. $item['NDC_Date'];
} else {
$result[$k. microtime()] = $item;
}
} else {
$result[$k. microtime()] = $item;
}
}
$result = array_values($result);
它没有做任何事情,因为返回的最终数组与我给出的数组相同。
有原因吗?我做错了什么?
感谢您的帮助!