2012-06-07 13 views
2

如何組合兩個數組,它應該像下面的示例那樣排序?在PHP中結合但跳過數組值

我想利用這個數列:

Array 
(
    [0] => Array 
     (
      [0] => ZE 
      [1] => CD 
      [2] => 97 
     ) 

    [1] => Array 
     (
      [0] => ZE 
      [1] => CD 
      [2] => 1908923 
     ) 

    [2] => Array 
     (
      [0] => ZD 
      [1] => CD 
      [2] => 23 
     ) 

) 

,我想應該是這樣的:

Array 
(
    [0] => Array 
     (
      [ZE] => Array 
       (
        [0] => Array 
         (
          [0] => CD 
          [1] => 97 
         ) 

        [1] => Array 
         (
          [0] => CD 
          [1] => 1908923 
         ) 
       ) 
     ) 

    [1] => Array 
     (
      [0] => ZD 
      [1] => CD 
      [2] => 23 
     ) 

) 

我試着做一些循環,但我沒有得到結果,請大家幫忙

感謝

回答

2

事情是這樣的......

$array = array(
    array(
     "ZE", 
     "CD", 
     97 
    ), 
    array(
     "ZE", 
     "CD", 
     1908923 
     ), 
    array(
     "ZD", 
     "CD", 
     23 
    ) 
); 

$result = array(); 
$search = 'ZE'; 

foreach($array as $elem){ 
    if(($key = array_search($search, $elem)) !== false){ 
     unset($elem[$key]); 
     $result[0][$search][] = $elem; 
    } else { 
     $result[] = $elem; 
    } 
} 

print_r($result); 

不知道你想要的結果數組的樣子,但這裏正是與$search是一個數組的例子:

$result = array(); 
$search = array('ZE', 'ZD', 'ZI'); 

foreach($array as $elem){ 
    $key = false; 
    foreach($search as $s){ 
     if(($key = array_search($s, $elem)) !== false){ 
      break; 
     } 
    } 
    if($key !== false){ 
     unset($elem[$key]); 
     $result[0][$s][] = $elem; 
    } else { 
     $result[] = $elem; 
    } 
} 

print_r($result); 
+0

如何搜索如果搜索是一個數組,如'$ search = array('ZE','ZD','ZI')'? – thegrede

+0

不確定你想要結果數組的樣子,但我添加了一個例子,其中'$ search'是一個數組... – keithhatfield

+0

非常感謝,這正是我所期待的,謝謝 – thegrede

1
$array = array(
    array(
    "ZE", 
    "CD", 
    97 
), 
    array(
    "ZE", 
    "CD", 
    1908923 
), 
    array(
    "ZD", 
    "CD", 
    23 
) 
); 

$new_array = array(); 
$i = 0; 
$ix = 1; 
foreach($array as $var){ 
    if($var[0]=='ZE'){ 
    $new_array[0]['ZE'][$i][0] = 'CD'; 
    $new_array[0]['ZE'][$i][1] = $var[2]; 
    $i++; 
    }else{ 
    $new_array[$ix][0] = 'ZD'; 
    $new_array[$ix][1] = 'CD'; 
    $new_array[$ix][2] = $var[2]; 
    $ix++; 
    } 
} 

var_dump($new_array); 
+0

我怎樣才能使它如果搜索是一個數組,如'$ search = array('ZE','ZD','ZI')'? – thegrede