2013-10-22 43 views
1

这是我的交易。 我有这个数组:数组操作和重新排列

Array // called $data in my code 
(
    [0] => Array 
     (
      [name] => quantity 
      [value] => 0 
     ) 

    [1] => Array 
     (
      [name] => var_id 
      [value] => 4 
     ) 

    [2] => Array 
     (
      [name] => quantity 
      [value] => 0 
     ) 

    [3] => Array 
     (
      [name] => var_id 
      [value] => 5 
     ) 

) 

,我需要它象是:

Array // called $temp in my code 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [name] => quantity 
        [value] => 0 
       ) 

      [1] => Array 
       (
        [name] => var_id 
        [value] => 4 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [name] => quantity 
        [value] => 0 
       ) 

      [1] => Array 
       (
        [name] => var_id 
        [value] => 5 
       ) 

     ) 

) 

,我做到了使用此代码我提出:

$data = $_POST['data']; 
    $temp = array(); 
    foreach($data as $key => $datum) 
    { 
     if($key%2 == 0) 
     { 
      $temp[$key] = array(); 
      array_push($temp[$key], $datum, $data[$key+1]); 
     } 
    } 

但我认为,我的代码是一些有点愚蠢,特别是如果我有一个巨大的数据。最终我想要做的只是将每个两个索引合并到一个数组中,并且我知道应该有比我的代码更好的东西来完成它,有什么建议吗?

回答

6

发现array_chunk()

$temp = array_chunk($data, 2); 
+0

噢,不错,不知道那个 – Jeroen

+0

+1,这是一个很好的答案,喜欢它。 不知道这样的功能存在:D –

2
$cnt = count($data); 
$temp = array(); 
for ($i = 0; $i < $cnt; $i = $i + 2) 
{ 
    $temp[] = array($data[$i], $data[$i+1]); 
} 
1

看看array_chunk

<?php 
$array = array(
    array(1), 
    array(2), 
    array(3), 
    array(4), 
); 

print_r(
    array_chunk($array, 2, false) 
); 

/* 
    Array 
    (
     [0] => Array 
     (
      [0] => Array 
      (
       [0] => 1 
      ) 
      [1] => Array 
      (
       [0] => 2 
      ) 
     ) 
     [1] => Array 
     (
      [0] => Array 
      (
       [0] => 3 
      ) 
      [1] => Array 
      (
       [0] => 4 
      ) 
     ) 
    ) 
*/