如何在键和值匹配的基础上从现有数组创建数组


How to create an array from the existing array on basis of key and value match

我有一个数组,我希望属于同一天的数据会出现在一个索引上,就像下面的数组一样。我在1和2索引中有相同的日期,所以结果数组应该像我的ewault数组,这样属于同一日期的数据会显示在同一索引上。我该怎么做?

我的阵列:

Array
(
    [0] => Array
        (
            [pkMessageID] => 6
            [fkPostID] => 4
            [messageSenderID] => 2
            [messageRecieverID] => 19
            [messageBody] => Nice
            [messageStatus] => 1
            [DateOnly] => 2015-07-07
            [messageDateAdded] => 2015-07-07 16:20:58
        )
    [1] => Array
        (
            [pkMessageID] => 5
            [fkPostID] => 4
            [messageSenderID] => 19
            [messageRecieverID] => 2
            [messageBody] => Hi I am good how r u
            [messageStatus] => 1
            [DateOnly] => 2015-07-06
            [messageDateAdded] => 2015-07-06 16:14:05
        )
    [2] => Array
        (
            [pkMessageID] => 4
            [fkPostID] => 4
            [messageSenderID] => 2
            [messageRecieverID] => 19
            [messageBody] => Hello akhilesh how r u
            [messageStatus] => 1
            [DateOnly] => 2015-07-06
            [messageDateAdded] => 2015-07-06 16:12:22
        )
)

但是,结果数组应该是:

Array
(
    [0] => Array
        (
            [pkMessageID] => 6
            [fkPostID] => 4
            [messageSenderID] => 2
            [messageRecieverID] => 19
            [messageBody] => Nice
            [messageStatus] => 1
            [DateOnly] => 2015-07-07
            [messageDateAdded] => 2015-07-07 16:20:58
        )
    [1] => Array
        (
 [0] => Array
        (
            [pkMessageID] => 5
            [fkPostID] => 4
            [messageSenderID] => 19
            [messageRecieverID] => 2
            [messageBody] => Hi I am good how r u
            [messageStatus] => 1
            [DateOnly] => 2015-07-06
            [messageDateAdded] => 2015-07-06 16:14:05
        )
    [1] => Array
        (
            [pkMessageID] => 4
            [fkPostID] => 4
            [messageSenderID] => 2
            [messageRecieverID] => 19
            [messageBody] => Hello akhilesh how r u
            [messageStatus] => 1
            [DateOnly] => 2015-07-06
            [messageDateAdded] => 2015-07-06 16:12:22
        )
)
)

这可以使用以下方法完成:

$out = array();
foreach($input as $data)
{
    if( ! is_array($out[$data['DateOnly']])){
        $out[$data['DateOnly']] = array();
    }
    $out[$data['DateOnly']][] = $data;
}

我还没有代码,但我希望你能明白。只需将日期用作数组中的索引即可。因此,结果将沿着。

[2015-7-6] => Array ( [0] => Array( DateOnly => 2015-7-6, ..))
[2015-7-7] => Array ( [0] => Array( DateOnly => 2015-7-7, .. ), [1] => Array(DateOnly => 2015-7-7 , .. ))