2016-10-03 131 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);你还有问题吗? –