I need to sort a array on some condition.
Array
(
[0] => Array
(
[entity_id] => 10
[product_id] => 424
[city] => 18
[sort_order] => 10
[deal_type_id] => dow
[deal_from_date] => 2010-12-18
[deal_to_date] => 2026-02-19
)
[1] => Array
(
[entity_id] => 11
[product_id] => 423
[city] => 18
[sort_order] => 11
[deal_type_id] => dow
[deal_from_date] => 2010-12-18
[deal_to_date] => 2027-02-19
)
[2] => Array
(
[entity_id] => 12
[product_id] => 422
[city] => 18
[sort_order] => 12
[deal_type_id] => dow
[deal_from_date] => 2011-12-18
[deal_to_date] => 2030-01-19
)
[3] => Array
(
[entity_id] => 13
[product_id] => 420
[city] => 18
[sort_order] => 13
[deal_type_id] => dow
[deal_from_date] => 2011-12-18
[deal_to_date] => 2030-01-19
)
[4] => Array
(
[entity_id] => 1
[product_id] => 463
[city] => 18
[sort_order] => 1
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2025-01-19
)
[5] => Array
(
[entity_id] => 2
[product_id] => 452
[city] => 18
[sort_order] => 2
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2026-01-19
)
[6] => Array
(
[entity_id] => 3
[product_id] => 448
[city] => 18
[sort_order] => 3
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2027-01-19
)
[7] => Array
(
[entity_id] => 4
[product_id] => 441
[city] => 18
[sort_order] => 4
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2024-01-19
)
[8] => Array
(
[entity_id] => 5
[product_id] => 440
[city] => 18
[sort_order] => 5
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2027-01-19
)
[9] => Array
(
[entity_id] => 6
[product_id] => 439
[city] => 18
[sort_order] => 6
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2028-01-19
)
[10] => Array
(
[entity_id] => 7
[product_id] => 433
[city] => 18
[sort_order] => 7
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2013-01-19
)
[11] => Array
(
[entity_id] => 8
[product_id] => 427
[city] => 18
[sort_order] => 8
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2022-01-19
)
[12] => Array
(
[entity_id] => 9
[product_id] => 425
[city] => 18
[sort_order] => 9
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2025-02-19
)
)
I need to compare deal_from_date from previous to next key. if both are same then, i need to check grater value in deal_to_date. if i found both deal_to_date value is diffrent then sort as per greater first.
I tried.
for($i=0;$i<count($result);$i++)
{
if(array_key_exists($i+1, $result))
{
if(strtotime($result[$i]['deal_from_date']) == strtotime($result[$i+1]['deal_from_date']))
{
echo $i;
if(strtotime($result[$i]['deal_to_date']) < strtotime($result[$i+1]['deal_to_date']))
{
$firstArray = $result[$i];
unset($result[$i]);
$secondArray = $result[$i+1];
unset($result[$i]);
$result[$i] = $secondArray;
$result[$i+1] = $firstArray;
}
}
}
}
I need this output.
Array
(
[0] => Array
(
[entity_id] => 11
[product_id] => 423
[city] => 18
[sort_order] => 11
[deal_type_id] => dow
[deal_from_date] => 2010-12-18
[deal_to_date] => 2027-02-19
)
[1] => Array
(
[entity_id] => 10
[product_id] => 424
[city] => 18
[sort_order] => 10
[deal_type_id] => dow
[deal_from_date] => 2010-12-18
[deal_to_date] => 2026-02-19
)
[1] => Array
(
[entity_id] => 12
[product_id] => 422
[city] => 18
[sort_order] => 12
[deal_type_id] => dow
[deal_from_date] => 2011-12-18
[deal_to_date] => 2030-01-19
)
[2] => Array
(
[entity_id] => 13
[product_id] => 420
[city] => 18
[sort_order] => 13
[deal_type_id] => dow
[deal_from_date] => 2011-12-18
[deal_to_date] => 2030-01-19
)
[3] => Array
(
[entity_id] => 2
[product_id] => 452
[city] => 18
[sort_order] => 2
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2026-01-19
)
[4] => Array
(
[entity_id] => 1
[product_id] => 463
[city] => 18
[sort_order] => 1
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2025-01-19
)
[5] => Array
(
[entity_id] => 3
[product_id] => 448
[city] => 18
[sort_order] => 3
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2027-01-19
)
[6] => Array
(
[entity_id] => 6
[product_id] => 439
[city] => 18
[sort_order] => 6
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2028-01-19
)
[7] => Array
(
[entity_id] => 5
[product_id] => 440
[city] => 18
[sort_order] => 5
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2027-01-19
)
[8] => Array
(
[entity_id] => 9
[product_id] => 425
[city] => 18
[sort_order] => 9
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2025-02-19
)
[9] => Array
(
[entity_id] => 4
[product_id] => 441
[city] => 18
[sort_order] => 4
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2024-01-19
)
[10] => Array
(
[entity_id] => 8
[product_id] => 427
[city] => 18
[sort_order] => 8
[deal_type_id] => dod
[deal_from_date] => 2013-12-18
[deal_to_date] => 2022-01-19
)
[11] => Array
(
[entity_id] => 7
[product_id] => 433
[city] => 18
[sort_order] => 7
[deal_type_id] => dom
[deal_from_date] => 2013-12-18
[deal_to_date] => 2013-01-19
)
)
I need to sort array if deal multiple deal from date is same date. then sorting based on deal_to_date desc. only for same group.