2013-10-22 82 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 
      ) 
     ) 
    ) 
*/