Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP中的另一个关联数组值排序一个关联数组值_Php_Arrays_Associative Array_Array Merge - Fatal编程技术网

用PHP中的另一个关联数组值排序一个关联数组值

用PHP中的另一个关联数组值排序一个关联数组值,php,arrays,associative-array,array-merge,Php,Arrays,Associative Array,Array Merge,我在标题中有类似的问题。我试着自己去弄清楚,在网上搜索,但没有结果/ 我有4个阵列: $sortingArr = array( 0 => 'EURUSD', 1 => 'USDGBP' ); $arr1 = array('name' => 'EURUSD'); $arr2 = array('name' => 'USDPLN'); $arr3 = array('name' => 'USDGBP'); 我合并了名为arr1、arr2、arr3的部分,

我在标题中有类似的问题。我试着自己去弄清楚,在网上搜索,但没有结果/

我有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中的值


我希望我能解释清楚这一点,请理解,因为这是我在这里的第一篇帖子:)

下面是按另一个数组的值对一个数组进行排序的函数

<?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;
}

下面是按另一个数组的值对数组进行排序的函数

<?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;
}

你的预期产量是多少?
USDPLN
应该在
EURUSD
USDGBP
之间还是之后?我想得到按$sorting排序的$data数组如下:'EURUSD'、'USDGBP'、'USDPLN'现在我有了:'EURUSD'、'USDPLN'、'USDGBP',您的预期输出按照字母顺序进行基本排序,为什么不仅仅是
sort($mergedarray)
?示例您的预期输出是什么?
USDPLN
应该在
EURUSD
USDGBP
之间还是之后?我想得到按$sorting排序的$data数组如下:'EURUSD'、'USDGBP'、'USDPLN'现在我有了:'EURUSD'、'USDPLN'、'USDGBP',您的预期输出按照字母顺序进行基本排序,为什么不仅仅是
sort($mergedarray)
?举例说明是正确的。或者可以使用returnarray\u merge($ordered,$array);你还有问题吗?没错。或者可以使用returnarray\u merge($ordered,$array);你还有问题吗?