2016-10-03 133 views
1

我在標題中有類似的問題。我嘗試自己看着辦吧,並在互聯網,但沒有結果搜索;/用PHP中的另一個關聯數組值排序一個關聯數組值

我有4個數組:

$sortingArr = array(
    0 => 'EURUSD', 
    1 => 'USDGBP' 
); 

$arr1 = array('name' => 'EURUSD'); 
$arr2 = array('name' => 'USDPLN'); 
$arr3 = array('name' => 'USDGBP'); 

,我合併的命名ARR1,ARR2,ARR3如下所示:

$data = array_merge_recursive($arr1, $arr2, $arr3); 

如何從$ data中排序值,如'EURUSD'...按$ sortingArr中的值排序。

我希望我解釋清楚這一點,請在這裏瞭解怎麼把它我的第一篇:)

+1

您的預期產出是? 'USDPLN'應該在'EURUSD'和'USDGBP'之間還是之後? –

+0

我想通過$ sortingArr排序這樣的$ data數組: 「歐元兌美元, 'USDGBP', 'USDPLN' 現在我有: 」歐元兌美元, 'USDPLN', 「USDGBP ', –

+0

您的期望輸出遵循字母順序的基本排序,爲什麼不只是'sort($ mergedarray)'?示例https://eval.in/654407 –

回答

0

下面是功能排序另一個數組的值的數組

<?php 
    //sorting array 
    $sortingArr = array(
    0 => 'EURUSD', 
    1 => 'USDGBP', 
); 
$arr1 = array('name' => 'EURUSD'); 
$arr2 = array('name' => 'USDPLN'); 
$arr3 = array('name' => 'USDGBP'); 
// to be sorted array 
$data = array_merge_recursive($arr1, $arr2, $arr3); 
// calling a custom function 
$new_data = sortArrayByArrayValue($data['name'],$sortingArr); 
print_r($new_data); // print results 

function sortArrayByArrayValue($array, $orderArray) { 
    $ordered = array(); 
    // loop the array 
    foreach ($orderArray as $key=>$value) { 
     // check the value is in the $array 
     if (($k = array_search($value, $array)) !== false) { 
      // assign thet value to new array 
      $ordered[$k] = $array[$k]; 
      // unset the value 
      unset($array[$k]); 
     } 
    } 
    return $ordered+ $array; 
} 

輸出:

Array 
(
    [0] => EURUSD 
    [2] => USDGBP 
    [1] => USDPLN 
) 
+0

其正確。或者你可以使用return array_merge($ ordered,$ array);你還有問題嗎? –