2014-09-19 4 views
0

Примеры значений массива:Группировка массива в PHP

 Array ([0] => '2014-07-04 ' [1] => 246) 
     Array ([0] => '2014-07-04' [1] => 213) 
     Array ([0] => '2014-07-04 ' [1] => 274) 
     Array ([0] => '2014-07-04 ' [1] => 249) 
     Array ([0] => '2014-07-04 ' [1] => 253) 
     Array ([0] => '2014-07-04 ' [1] => 23) 
     Array ([5] => '2014-07-04 ' [6] => 11) 
     Array ([5] => '2014-08-04 ' [6] => 1743) 
     Array ([5] => '2014-08-04 ' [6] => 1.31) 
     Array ([5] => '2014-08-04' [6] => 172) 
     Array ([5] => '2014-08-04 ' [6] => 179) 
     Array ([5] => '2014-08-04 ' [6] => 1709) 
     Array ([5] => '2014-08-04 ' [6] => 176) 

Теперь я хочу, чтобы разделить этот массив на два массива, как показано ниже:

 Firstarray=>array(
     Array ([0] => '2014-07-04 ' [1] => 246) 
     Array ([0] => '2014-07-04' [1] => 213) 
     Array ([0] => '2014-07-04 ' [1] => 274) 
     Array ([0] => '2014-07-04 ' [1] => 249) 
     Array ([0] => '2014-07-04 ' [1] => 253) 
     Array ([0] => '2014-07-04 ' [1] => 23) 
    ) 

     Secondarray=>array(
     Array ([5] => '2014-07-04 ' [6] => 11) 
     Array ([5] => '2014-08-04 ' [6] => 1743) 
     Array ([5] => '2014-08-04 ' [6] => 1.31) 
     Array ([5] => '2014-08-04' [6] => 172) 
     Array ([5] => '2014-08-04 ' [6] => 179) 
     Array ([5] => '2014-08-04 ' [6] => 1709) 
     Array ([5] => '2014-08-04 ' [6] => 176) 
    ) 

Пожалуйста, предложить некоторые идеи. Помогите мне написать код на php. Основная задача состоит в разделении массива на две части, основанные на значениях индекса.

+0

ли вы начать с массивом массивов? Если это так, на основе моего лучшего предположения, вы будете перебирать каждый элемент и проверять ключ первого элемента в нем. –

+0

Если вы знаете ключи, то он уже раздельный. –

+0

значения массива будут динамически изменяться. Некоторое время индекс будет появляться как [0] [1], [5] [6], [10] [11], [15] [16] .. Поэтому мне нужно создать общая функция для группировки в отдельный массив – Sivasailanathan

ответ

1

Я надеюсь, что это будет работать для вас ....

<?php 
$combArray = array 
(
    Array (0 => '2014-07-04', 1 => 246), 
    Array (0 => '2014-07-04', 1 => 213), 
    Array (0 => '2014-07-04', 1 => 274), 
    Array (0 => '2014-07-04', 1 => 249), 
    Array (0 => '2014-07-04', 1 => 253), 
    Array (0 => '2014-07-04', 1 => 23 ), 
    Array (5 => '2014-07-04', 6 => 11 ), 
    Array (5 => '2014-08-04', 6 => 1743), 
    Array (5 => '2014-08-04', 6 => 1.31), 
    Array (5 => '2014-08-04', 6 => 172), 
    Array (5 => '2014-08-04', 6 => 179), 
    Array (5 => '2014-08-04', 6 => 1709), 
    Array (5 => '2014-08-04', 6 => 176) 
); 

$tmpKey = ''; 
$ResArray = array();  

$i=0; 
foreach ($combArray as $arLoop) 
{ 
    $arkeys = array_keys($arLoop); 

    if ($tmpKey != $arkeys[0]) 
    { 
     $i++; 
    } 

    $ResArray[$i][] = $arLoop; 

    $tmpKey = $arkeys[0]; 
} 

print_r($ResArray); 
+0

Приятно, что это работает. Знаете, как разобрать этот ResArray. – Sivasailanathan

0

Или вы можете попробовать это ...

<?php 

    $items = array(
      array(0 => '2014-07-04', 1 => 246), 
      array(0 => '2014-07-04', 1 => 213), 
      array(0 => '2014-07-04', 1 => 1500), 
      array(5 => '2014-07-04', 6 => 11), 
      array(5 => '2014-07-04', 6 => 112), 
      array(5 => '2014-07-04', 6 => 23131), 
      array(7 => '2014-07-04', 8 => 23131), 
    ); 


     $results = []; 
     foreach ($items as $element) {  
      grouper($element,$results); 
     } 

    function grouper(array $arr,array &$res) 
    { 
     static $group = 1; 
     if (! array_key_exists($group, $res)) { 
      $res[$group][] = $arr; 
      return false; 
     } 

     if (isset($res[$group][array_keys($arr)[0]])){ 
      $res[$group][] = $arr; 
     } else { 
      $res[$group][] = $arr; 
      $group++; 
     } 
    } 

    echo '<pre>' , print_r($results,true) , '</pre>'; 
Смежные вопросы