2017-10-05 130 views
3

我想先根據基於另一個數組的順序對值進行排序。首先根據另一個數組對數組中的值進行排序

$countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB'); 
$popular = explode(',', 'FR,GB'); 

我從$countries我想在$popular定義的值,形成一個這樣的數組:

$ordered = ['GB,FR,AF,AL,DZ,AS,AD,AO,AI,AQ'] 

感謝

+0

你需要編寫此 –

回答

2

您可以使用array_mergearray_diff

檢查工作演示這裏https://eval.in/873974

$countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB'); 
$popular = explode(',', 'FR,GB'); 
sort($popular); // sort to manage order 

// remove common element from $countries and merge with $popular 
$ordered = array_merge($popular,array_diff($countries, $popular));  
echo "<pre>"; 
print_r($ordered); 
+0

自定義代碼這就是我想要謝謝! – gold82

0

試試這個代碼

<?php 
     $arr= array(); 
     $countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB'); 
     $popular = explode(',', 'FR,GB'); 
     $total_popular = count($popular); 
     $total_countries = count($countries); 

     for ($i=0; $i < $total_popular; $i++) { 
      if (in_array($popular[$i], $countries)) { 
       $arr[]=$popular[$i]; 
      } 
     } 
     for ($j=0; $j < $total_countries; $j++) { 
      if (! in_array($countries[$j], $arr)) { 
       $arr[]=$countries[$j]; 
      } 
     } 
     echo "<pre>"; 
     print_r($arr); 

     ?> 

你的期望這段代碼的輸出是

enter image description here

相關問題