2015-05-09 1 views
2

Я хочу выделить массив по месяцам.Сегрегированная база массива по месяцам

Вот пример массива и вывод я хотел бы получить:

Array 
{ 
    [1] => 1:"Fruit"; 
    [2] => 2:"Mangoe"; 
    [3] => 3:"2015-2-5"; 
} 

Array 
{ 
    [1] => 1:"Fruit"; 
    [2] => 2:"Banana"; 
    [3] => 3:"2015-4-11"; 
} 

Array 
{ 
    [1] => 1:"Fruit"; 
    [2] => 2:"Orange"; 
    [3] => 3:"2015-2-10"; 
} 

Array 
{ 
    [1] => 1:"Fruit"; 
    [2] => 2:"Pineapple"; 
    [3] => 3:"2015-8-3"; 
} 

Цель Выход:

February 
Fruit:Banana 
Fruit:Orange 

April 
Fruit:Banana 

August 
Fruit:Pineapple 

Это мой код:

<?php 

    foreach ($results as $key => $value) 
    { 
     $value = get_object_vars($value); 
     $raw_slice = explode('s:', $value['rawdata']); 


     //VARIABLES 
     //GET TITLE 
     $title_cut = explode(':"', str_replace('";', '', $raw_slice[2])); 
     $title = $title_cut['1']; 

     //GET DATE 
     $date_cut = explode(':"', str_replace('";', '', $raw_slice[3])); 
     $date_text = $date_cut['1']; 



     $month = "01"; 
     $year = "2015"; 

     $start_date = "01-".$month."-".$year; 
     $start_time = strtotime($start_date); 

     $end_time = strtotime("+1 month", $start_time); 

     for($i=$start_time; $i<$end_time; $i+=86400) 
     { 
      $list[] = date('Y-m-d-D', $i); 
     } 


     echo "<pre>"; 

     echo "<div class ='title'>"; 
     echo $title.'<br>'; 
     echo "</div>"; 

     echo "<div class ='date'>"; 
     echo date('F \ j,\ Y',strtotime($date_text)); 
     echo "</div>"; 


     echo "</pre>";   
    } 

?> 
+0

Где находится манго в ожидаемом выводе? –

+2

Как создается этот массив? Похоже, вы могли бы сделать вашу жизнь намного легче, если бы вы создали массивы по-разному. – Devon

ответ

0

Это странный массив, и, если возможно, вы бы хорошо его реструктурировали. Не уверен, как он строится. Но если это все, с чем вам нужно работать, вот один из способов получить нужный результат:

$arrays = array 
(
    array 
    (
     1 => '1:"Fruit"', 
     2 => '2:"Mangoe"', 
     3 => '3:"2015-2-5"', 
    ), 
    array 
    (
     1 => '1:"Fruit"', 
     2 => '2:"Banana"', 
     3 => '3:"2015-4-11"', 
    ), 
    array 
    (
     1 => '1:"Fruit"', 
     2 => '2:"Orange"', 
     3 => '3:"2015-2-10"', 
    ), 
    array 
    (
     1 => '1:"Fruit"', 
     2 => '2:"Pineapple"', 
     3 => '3:"2015-8-3"', 
    ), 
); 
$months = array(); 
foreach($arrays as $a) 
{ 
    preg_match('/\"([^\"]*?)\"/', $a[1], $category); 
    preg_match('/\"([^\"]*?)\"/', $a[2], $item); 
    preg_match('/\"([^\"]*?)\"/', $a[3], $date); 
    list($Y,$M,$D) = explode('-', str_replace('"', '', $date[0])); 
    $M = str_pad($M, 2, 0, STR_PAD_LEFT); 
    $D = str_pad($D, 2, 0, STR_PAD_LEFT); 
    $unix = strtotime($Y.'-'.$M.'-'.$D); 
    $key = date('m', $unix); 
    $months[$key]['month'] = date('F', $unix); 
    $months[$key]['categories'][str_replace('"', '', $category[0])][] = str_replace('"', '', $item[0]); 
} 
ksort($months); 
echo '<pre>'; 
foreach($months as $m) 
{ 
    echo "<div class ='month'>"; 
    echo $m['month']; 
    echo "</div>"; 
    ksort($m['categories']); 
    foreach($m['categories'] as $cat => $items) 
    { 
     foreach($items as $item)   
     { 
      echo "<div class ='item'>"; 
      echo $cat.':'.$item; 
      echo "</div>"; 
     } 
    } 
    echo '<br>'; 
} 
echo '</pre>'; 
Смежные вопросы