2014-04-29 106 views
0

--- --- AIM解析PHP數組取決於值

我有這樣

$codes = array(
      array('type'=>1,'id'=>'qcdv'), 
      array('type'=>2,'id'=>'thcd'), 
      array('type'=>2,'id'=>'ngjd'), 
      array('type'=>1,'id'=>'mhkx'), 
      array('type'=>3,'id'=>'tnfr') /* many more elements*/ 
     ); 

和期望的輸出的陣列是

Array(
    [0] => Array() 
    [1] => Array (
     [0] => qcdv 
     [1] => mhkx) 
    [2] => Array(
      [0] => thcd 
      [1] => ngjd 
     ) 
    [3] => Array (
     [0] => tnfr 
    ) 
) 

即通過區分鍵入鍵。

- 我的嘗試到現在 -

$codes = array(
    array('type'=>1,'id'=>'qcdv'), 
    array('type'=>2,'id'=>'thcd'), 
    array('type'=>2,'id'=>'ngjd'), 
    array('type'=>1,'id'=>'mhkx'), 
    array('type'=>3,'id'=>'tnfr') 
); 
$by_type=array(array(),array(),array(),array()); /* unable to digest this line */ 
foreach($codes as $code) { 
    array_push($by_type[$code['type']],$code['id']); 
} 
print_r($by_type); 

這是給正確的輸出,但輸入鍵範圍不固定,所以我不能用

$by_type=array(array(),array(),array(),array()); 

是還有其他有效的方法嗎?

回答

3
<?php 

$codes = array(
      array('type'=>1,'id'=>'qcdv'), 
      array('type'=>2,'id'=>'thcd'), 
      array('type'=>2,'id'=>'ngjd'), 
      array('type'=>1,'id'=>'mhkx'), 
      array('type'=>3,'id'=>'tnfr') 
     ); 


$array = array(); 
foreach($codes as $v) { 
$array[$v['type']][] = $v['id']; 
} 

print_r($array); 
+0

通知呢? –

2

這個代碼做的伎倆:

$output = array(); 
foreach ($codes as $idx1 => $array2) 
{ 
    $k = $array2['type']; 
    $v = $array2['id']; 
    if (!isset($output[$k])) $output[$k] = array(); 
    $output[$k][] = $v; 
} 
+0

輝煌和非常快的了。謝謝... :) –

1
<?php 

$codes = array(
      array('type'=>1,'id'=>'qcdv'), 
      array('type'=>2,'id'=>'thcd'), 
      array('type'=>2,'id'=>'ngjd'), 
      array('type'=>1,'id'=>'mhkx'), 
      array('type'=>3,'id'=>'tnfr') /* many more elements*/ 
     ); 

      $result = array(); 
      foreach($codes as $code) 
      { 
      $result[$code['type']][] = $code['id']; 
      } 

      print_r($result);