PHP - 分组数组

时间:2014-05-02 09:45:04

标签: php arrays multidimensional-array

$Show = [];

foreach ($result_radio as $Station => $Show){
$Show [] = array($result_radio[$Station]['StationID'] => $Show); }  

var_dump($Show) //输出

array(19771) { // Number of Shows accross 182 Station

[0]=> array(1) { [24315]=> array(16) { ["StationID"]=>"24315" ["Show"]=> "JaazOnline" ["Genre"]=> "Jazz" ...
[1]=> array(1) { [24315]=> array(16) { ["StationID"]=>"24315" ["Show"]=> "Jaaz24/7" ["Genre"]=> "Jazz" ..
[2]=> array(1) { [24315]=> array(16) { ["StationID"]=>"24315" ["Show"]=> "JazzUsa" ["Genre"]=> "Jazz" ...
[3]=> array(1) { [66995]=> array(16) { ["StationID"]=>"66995" ["Show"]=> "StateofTrance" ["Genre"]=> "Electronic" ..
[4]=> array(1) { [66995]=> array(16) { ["StationID"]=>"66995" ["Show"]=> "ElectroHouse" ["Genre"]=> "Electronic"...

这会将19771个广播节目数组作为数组返回,其中$key是关于此特定节目的 StationID 和值$Show相关信息。

这就是我想要的,但我希望以某种方式格式化我的数组,而不是每个StationID只有一个数组,并且在属于此ID的所有节目中

例如

array(182) {  // 182 Radio Stations

[24315]=>  array(50) {  //Shows classified by Station Id

             array(16) { ["StationID"]=>"24315" ["Show"]=> "JaazOnline" ["Genre"]=> "Jazz" ...
             array(16) { ["StationID"]=>"24315" ["Show"]=> "Jaaz24/7" ["Genre"]=> "Jazz" ..
             array(16) { ["StationID"]=>"24315" ["Show"]=> "JazzUsa" ["Genre"]=> "Jazz" ...



[66995]=>  array(32) { 

             array(16) {["StationID"]=>"66995" ["Show"]=> "StateofTrance" ["Genre"]=> "Electronic" 
             array(16) {["StationID"]=>"66995" ["Show"]=> "ElectroHouse" ["Genre"]=> "Electronic"

为什么呢?
因为我认为它让我的生活更方便客户端以这种方式访问​​对象属性..请任何一些帮助格式化这个节目数组的方式,让一个索引代表一个站ID,并在所有节目中... < / p>

2 个答案:

答案 0 :(得分:1)

这个怎么样:

$Show = array();
foreach ($result_radio as $Station => $Show){
$Show [$result_radio[$Station]['StationID']][] = $Show; } 

它应该完全符合您的要求。

答案 1 :(得分:1)

您还可以编写如下函数:

function _group_by($array, $key) {
    $return = array();
    foreach($array as $val) {
        $return[$val[$key]][] = $val;
    }
    return $return;
}