3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = Array ( '0' => Array ( 'NDC_Date' => '2017-03-27', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '1' => Array ( 'NDC_Date' => '2017-03-28', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '2' => Array ( 'NDC_Date' => '2017-03-29', 'NDC_Item' => '0', 'NDC_Type' => 'Test', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '3' => Array ( 'NDC_Date' => '2017-03-30', 'NDC_Item' => '0', 'NDC_Type' => 'Test', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '4' => Array ( 'NDC_Date' => '2017-03-31', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '5' => Array ( 'NDC_Date' => '2017-04-01', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '6' => Array ( 'NDC_Date' => '2017-04-02', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), '7' => Array ( 'NDC_Date' => '2017-04-03', 'NDC_Item' => '0', 'NDC_Type' => 'Night', 'NDC_Rate' => '12.00', 'NDC_Taxes' => '0', 'NDC_TaxesName' => '0', 'NDC_Quantity' => '1', 'NDC_Status' => 'NotCharged', ), ); foreach ($array as $item) { $k = $item['NDC_Type']; if (!isset($result[$k])) { $result[$k] = $item; } elseif ( ($i = $result[$k]) && $item['NDC_Rate'] === $i['NDC_Rate'] && $item['NDC_Item'] === $i['NDC_Item'] && $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_Date'] .= ','. $item['NDC_Date']; } else { $result[$k. microtime()] = $item; } } else { $result[$k. microtime()] = $item; } } print_r($result);

preferences:
28.5 ms | 402 KiB | 5 Q