Pranav C Balan
Pranav C Balan

Reputation: 115242

Create 2 dimensional merged array based value

I have an array in the following format,

Array
(
    [0] => Array
        (
            [expense_id] => 7
            [type] => frfrf
            [mode] => rfr
            [amount] => 100
            [tran_type] => expense
            [date] => 2015-06-29
        )

    [1] => Array
        (
            [expense_id] => 8
            [type] => frfrf
            [mode] => rfr
            [amount] => 100
            [tran_type] => expense
            [date] => 2015-06-29
        )

    [2] => Array
        (
            [expense_id] => 9
            [type] => frfrf
            [mode] => rfr
            [amount] => 444
            [tran_type] => expense
            [date] => 2015-06-29
        )

    [3] => Array
        (
            [expense_id] => 10
            [type] => frfrf
            [mode] => rfr
            [amount] => 1000
            [tran_type] => income
            [date] => 2015-06-29
        )

    [4] => Array
        (
            [expense_id] => 5
            [type] => frfrf
            [mode] => rfr
            [amount] => 100
            [tran_type] => expense
            [date] => 2015-06-01
        )

)

I want merge the array based on date value and store it as an array with key as date

Array
(
    [2015-06-29] => Array
        (
            [0] => Array
                (
                    [expense_id] => 7
                    [type] => frfrf
                    [mode] => rfr
                    [amount] => 100
                    [tran_type] => expense
                    [date] => 2015-06-29
                )

            [1] => Array
                (
                    [expense_id] => 8
                    [type] => frfrf
                    [mode] => rfr
                    [amount] => 100
                    [tran_type] => expense
                    [date] => 2015-06-29
                )

            [2] => Array
                (
                    [expense_id] => 9
                    [type] => frfrf
                    [mode] => rfr
                    [amount] => 444
                    [tran_type] => expense
                    [date] => 2015-06-29
                )

            [3] => Array
                (
                    [expense_id] => 10
                    [type] => frfrf
                    [mode] => rfr
                    [amount] => 1000
                    [tran_type] => income
                    [date] => 2015-06-29
                )

        )

    [2015-06-01] => Array
        (
            [0] => Array
                (
                    [expense_id] => 5
                    [type] => frfrf
                    [mode] => rfr
                    [amount] => 100
                    [tran_type] => expense
                    [date] => 2015-06-01
                )

        )

)

Currently I'm doing it using foreach loop , is there any simple way to do this

foreach ($d as $v) {
    $d1[$v['date']][] = $v;
}

Data is retrieved using mysql, mysql query is also acceptable

Upvotes: 0

Views: 39

Answers (1)

user2594803
user2594803

Reputation:

I know only this way

$newArray = [];

foreach ($array as $subArray)
{
    $newArray[$subArray['date']][] = $subArray;
}

Upvotes: 1

Related Questions