2014-09-19 65 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

你有一个数组的数组开始?如果是这样,根据我的最佳猜测,您将迭代每个元素并检查其中第一个元素的键。 – 2014-09-19 05:23:17

+0

如果你知道密钥,那么它已经分开。 – 2014-09-19 05:25:10

+0

数组值将被动态地改变。有时候索引会像[0] [1],[5] [6],[10] [11],[15] [16]那样。所以我需要创建通用函数将其分组为单独的数组 – Sivasailanathan 2014-09-19 05:25:59

回答

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 2014-09-19 07:06:30

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>';