2015-07-21 32 views
0

這是我的數據看起來像組對象值

array (size=2) 


0 => 
    array (size=6) 
     'name' => string 'A new event' (length=11) 
     'start_time' => string '2015' (length=4) 
     'end_time' => string '2015' (length=4) 
     'subscription_start_time' => string '2015' (length=4) 
     'subscription_end_time' => string '2015' (length=4) 
     'capacity' => string '5' (length=1) 
    1 => 
    array (size=6) 
     'name' => string 'A new event 2' (length=13) 
     'start_time' => string '2015' (length=4) 
     'end_time' => string '2015' (length=4) 
     'subscription_start_time' => string '2015' (length=4) 
     'subscription_end_time' => string '2015' (length=4) 
     'capacity' => string '5' (length=1) 

現在看到兩個物體start_time財產..我想組相同start_time所以當我得到的數據中的所有對象像這樣的100個對象,我可以通過它們循環,並把所有的對象在一個對象中的單個數組中的對象相同...

我知道這將是簡單循環的foreach,但它已經很長時間後,我已經處理了對象分組,所以它現在讓我困惑。任何幫助?

回答

0

這是我最後寫 它完美

$all_grouped_events = array_fill(0, sizeof($modelEvent->all_events)-1 , array()); 
      $current_time = $modelEvent->all_events[0]['start_time']; 

      foreach ($modelEvent->all_events as $event) 
      { 
       if($modelEvent->all_events[$count]['start_time'] == $current_time) 
       { 
        array_push($all_grouped_events[$curr_count], $event); 
        $count++; 
       } 
       else 
       { 
        $curr_count = $count; 
        $current_time = $modelEvent->all_events[$count]['start_time']; 
        array_push($all_grouped_events[$curr_count], $event); 
        $count++; 
       } 
      } 

代碼的第一行是非常重要的。 array_push需要一個數組,其中值應該被推入,所以如果我們正在創建一個空數組,並且正在推入值,它不會工作,因爲我們將訪問未定義的索引,因此代碼的第一行使用所有索引初始化數組(靜態)並在每個索引處推送一個數組。

這就是所需要的數據看起來像什麼,我想

array (size=2) 


0 => 
    array (size=1) 
     0 => 
     array (size=6) 
      'name' => string 'A new event 3' (length=13) 
      'start_time' => string '2014' (length=4) 
      'end_time' => string '2015' (length=4) 
      'subscription_start_time' => string '2015' (length=4) 
      'subscription_end_time' => string '2015' (length=4) 
      'capacity' => string '5' (length=1) 
    1 => 
    array (size=2) 
     0 => 
     array (size=6) 
      'name' => string 'A new event' (length=11) 
      'start_time' => string '2015' (length=4) 
      'end_time' => string '2015' (length=4) 
      'subscription_start_time' => string '2015' (length=4) 
      'subscription_end_time' => string '2015' (length=4) 
      'capacity' => string '5' (length=1) 
     1 => 
     array (size=6) 
      'name' => string 'A new event 2' (length=13) 
      'start_time' => string '2015' (length=4) 
      'end_time' => string '2015' (length=4) 
      'subscription_start_time' => string '2015' (length=4) 
      'subscription_end_time' => string '2015' (length=4) 
      'capacity' => string '5' (length=1) 
0

請嘗試以下操作。

function groupBy($array, $key) { 
    $groupedData = []; 
    foreach ($array as $value) { 
     if (! array_key_exists($value[$key], $groupedData)) { 
      $groupedData[$value[$key]] = []; 
     } 
     $groupedData[$value[$key]][] = $value; 
    } 
    return $groupedData; 
}