2017-07-25 55 views
0

我需要使用PHP按鍵值對數組進行排序。如何使用PHP將數組排序爲相同的鍵值?

我在下面解釋我的數組。

$clients=array(array("clinet_id"=>9,"company"=>3,"id"=>4),array("clinet_id"=>9,"company"=>3,"id"=>6),array("clinet_id"=>9,"company"=>3,"id"=>7),array("clinet_id"=>10,"company"=>2,"id"=>4),array("clinet_id"=>10,"company"=>2,"id"=>8)); 
echo json_encode($clients); 

在這裏,我需要排序陣列每client_id裝置相同client_id將合併爲一個陣列與id作爲逗號分隔的字符串。我正在解釋下面的預期輸出。

$templatearr[9]=array('3' =>4,6,7) 
$templatearr[10]=array('2' =>4,8) 

這意味着它應該是這個$templatearr[clinet_id]=array(company =>id1,id2,...,)格式。

+2

好的,你有什麼試過,你卡在哪裏? –

+2

首先,請認識到這不是_sorting_ ... – CBroe

+0

除此之外,您的預期輸出似乎不匹配輸入數據。第一行應該是「3」=> 4,6,7「,對吧? – CBroe

回答

1

這樣的代碼:

$tmp = array(); 
foreach ($clients as $k => $v) { 
    if(!isset($tmp[$v['clinet_id']])){ 
     $tmp[$v['clinet_id']] = ''; 
    } 
    if(!is_array($tmp[$v['clinet_id']])){ 
     $tmp[$v['clinet_id']][$v['company']] = strval($v['id']); 
    }else{ 
     if($tmp[$v['clinet_id']][$v['company']]){ 
      $tmp[$v['clinet_id']][$v['company']] .=','.$v['id']; 
     }else{ 
      $tmp[$v['clinet_id']][$v['company']] = strval($v['id']); 
     } 
    } 
} 

和結果是:

Array 
(
    [9] => Array 
     (
      [3] => 4,6,7 
     ) 

    [10] => Array 
     (
      [2] => 4,8 
     ) 

) 
+0

這很多,如果根本不需要 –

+0

per clientid可能有另外一家公司我認爲是 – mmmorgen

+0

不,我只是想說我的想法是什麼,我也是新的堆垛機。 – mmmorgen

1

只是使用foreachBuild一個新的數組,你希望像下面

<?php 

$clients=array(array("clinet_id"=>9,"company"=>3,"id"=>4),array("clinet_id"=>9,"company"=>3,"id"=>6),array("clinet_id"=>9,"company"=>3,"id"=>7),array("clinet_id"=>10,"company"=>2,"id"=>4),array("clinet_id"=>10,"company"=>2,"id"=>8)); 

$temp =array(); 
foreach($clients as $key=>$val) 
{ 
    if(isset($temp[$val['clinet_id']])){ 

     $temp[$val['clinet_id']][$val['company']].=','.$val['id']; 

    }else{ 


     $temp[$val['clinet_id']][$val['company']]=$val['id']; 
    } 


} 

print_r($temp); 
?> 

輸出:

Array 
(
    [9] => Array 
     (
      [3] => 4,6,7 
     ) 

    [10] => Array 
     (
      [2] => 4,8 
     ) 

) 
相關問題