Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用字段值对数组数据进行分组_Php_Arrays_Sorting_Grouping - Fatal编程技术网

Php 使用字段值对数组数据进行分组

Php 使用字段值对数组数据进行分组,php,arrays,sorting,grouping,Php,Arrays,Sorting,Grouping,我有一个数组newsfeed,其中包含当前用户的最后追随者,如下所示: $newsFeed=array( 1 => array( 'follower'=>'1', 'following'=>'5', 'datecreation'=>'2013-07-12 15:10:34' ), 2=>array( 'follower'=>'6', 'following'=>'5', 'datecreation'=>'2013-07-12 12:30:56' ),

我有一个数组newsfeed,其中包含当前用户的最后追随者,如下所示:

$newsFeed=array(
1 => array(
'follower'=>'1',
'following'=>'5',
'datecreation'=>'2013-07-12 15:10:34'
),
2=>array(
'follower'=>'6',
'following'=>'5',
'datecreation'=>'2013-07-12 12:30:56'
),
3=>array(
'follower'=>'7',
'following'=>'5',
'datecreation'=>'2013-05-12 19:08:00'
)
);
 $newsFeed=array(
    1 => array(
    'follower'=>array('1','6'),
    'following'=>'5',
    'datecreation'=>'2013-07-12'
    ),
    3=>array(
    'follower'=>'7',
    'following'=>'5',
    'datecreation'=>'2013-05-12 19:08:00'
    )
    );
我想做的是缩短新闻提要,将当天的项目放在一个数组中,将项目1和2放在上一个表中。详情如下:

$newsFeed=array(
1 => array(
'follower'=>'1',
'following'=>'5',
'datecreation'=>'2013-07-12 15:10:34'
),
2=>array(
'follower'=>'6',
'following'=>'5',
'datecreation'=>'2013-07-12 12:30:56'
),
3=>array(
'follower'=>'7',
'following'=>'5',
'datecreation'=>'2013-05-12 19:08:00'
)
);
 $newsFeed=array(
    1 => array(
    'follower'=>array('1','6'),
    'following'=>'5',
    'datecreation'=>'2013-07-12'
    ),
    3=>array(
    'follower'=>'7',
    'following'=>'5',
    'datecreation'=>'2013-05-12 19:08:00'
    )
    );
注意,在结果中,我删除了key=2和key=1的数组,并将追随者的ID放入一个数组中,然后放入一个新数组中


是否有一个PHP函数可以提供帮助

最后,我找到了解决方案,这是一个建议方案。。。将来可能会对可能出现的错误或异常进行更多的编辑

这是我建议的解决办法

$creationDate1 = false;
        foreach ($newsFeed as $key => $feed) {

            /*             * **followers** */
            if ($feed['type'] == 'follow') { //test if the current row is a follow type
                $creationDate = DateTime::createFromFormat("Y-m-d H:i:s", $feed['creationdate']);
                $creationDate = $creationDate->format('Y-m-d'); //drop H:i:s from date

                if ($creationDate != $creationDate1) {  
                    $followKey = $key;
                    $followersArray = array();
                }


                $followersArray[] = $feed['follower']; //array for followers ids


                unset($newsFeed[$key]);//remove the current row

                if ($creationDate != $creationDate1) { // if follow has not the same date as the previous one


                    $newsFeed[$followKey] = array(
                        'follower' => $followersArray,
                        'following' => $feed['following'],
                        'creationdate' => $feed['creationdate']
                    );//add row, with the datetime
                } else { //add row, with date, and without time.
                    $newsFeed[$followKey] = array(
                        'follower' => $followersArray,
                        'following' => $feed['following'],
                        'creationdate' => $creationDate
                    );
                }

                $creationDate1 = $creationDate; //$creationDate1=date of the current row.
            }
        } 
任何改进,以及编辑或建议将不胜感激