如何按其他数组键对数组键进行排序


How to sort array keys by other array keys?

例如,我有两个数组,如:

$first_array = array(
    1 => 'a',
    2 => 'b',
    3 => 'c',
    4 => 'd',
    5 => 'e'
);
$second_array = array(
    1 => 'not important',
    4 => 'not important',
    3 => 'not important',
    5 => 'not important',
    2 => 'not important',
);

有没有任何函数可以将第一个数组键(带值)按第二个数组键的顺序排列?或者我只需要循环第二个数组并通过键重新创建第一个数组?

更新:结果值应按秒数组键序列排列

$result = array(
    1 => 'a',
    2 => 'd',
    3 => 'c',
    4 => 'e',
    5 => 'b'
);

相同的问题已经发布

按另一个数组的键对数组进行排序

根据另一个数组的关键字对数组进行排序?

希望会有所帮助!

您可以这样做。。。

<?php
$first_array = array(
    1 => 'a',
    2 => 'b',
    3 => 'c',
    4 => 'd',
    5 => 'e'
);
$second_array = array(
    1 => 'not important',
    4 => 'not important',
    3 => 'not important',
    5 => 'not important',
    2 => 'not important',
);

foreach($first_array as $k=>$v)
{
$second_array[$k]=$v;
}
$result = array_values($second_array);
array_unshift($result, "dummy");
unset($result[0]);
print_r($result);

输出:

Array
(
    [1] => a
    [2] => d
    [3] => c
    [4] => e
    [5] => b
)

您可以通过使用单个foreach()循环和array_flip()来实现;和array_combine();

     $f = array(
    1 => 'a',
    2 => 'b',
    3 => 'c',
    4 => 'd',
    5 => 'e'
);
$s = array(
    1 => 'dummy',
    4 => 'dummy',
    3 => 'dummy',
    5 => 'dummy',
    2 => 'dummy',
);
$c=array();
$j=1;
foreach($s as $k=>$v){
$c[]=$f[$k];
}
$f=array_flip($f);
$c=array_combine($f,$c);
print_r($c);