php-按键对数组排序以匹配另一个数组';s按键点菜

php-按键对数组排序以匹配另一个数组';s按键点菜,php,arrays,sorting,Php,Arrays,Sorting,我有两个数组,都有相同的键(不同的值),但是数组#2的顺序不同。我希望能够使用第二个阵列,使其与第一个阵列的顺序相同 是否有一个功能可以快速执行此操作?试试这个 代码 $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); ksort($fruits); foreach ($fruits as $key => $val) { echo "$key = $val\n"

我有两个数组,都有相同的键(不同的值),但是数组#2的顺序不同。我希望能够使用第二个阵列,使其与第一个阵列的顺序相同

是否有一个功能可以快速执行此操作?

试试这个
代码

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
输出

a = orange
b = banana
c = apple
d = lemon

检查
ksort()

$arr1 = array(
    'a' => '42', 
    'b' => '551',
    'c' => '512',
    'd' => 'gge',
) ;


$arr2 = array(
    'd' => 'ordered',
    'b' => 'is',
    'c' => 'now',
    'a' => 'this', 
) ;

$arr2ordered = array() ;

foreach (array_keys($arr1) as $key) {
    $arr2ordered[$key] = $arr2[$key] ;
}

我不完全确定这是否是你想要的。不管怎样,只要数组的大小保持不变,这就应该适合您

$gamey = array ("wow" => "World of Warcraft", "gw2" => "Guild Wars2", "wiz101" => "Wizard 101");
$gamex = array ("gw2" => "best game", "wiz101" => "WTF?", "wow" => "World greatest");


function match_arrayKeys ($x, $y)
{
    $keys    = array_keys ($x);
    $values  = array_values ($y);

    for ($x = 0; $x < count ($keys); $x++)
    {
        $newarray [$keys[$x]] = $y[$keys[$x]];
    }
    return $newarray;
}

print_r (match_arrayKeys ($gamey, $gamex)); 
你可以用


Ksort只是按键对数组进行排序,我希望有一个函数可以使用第二个数组来匹配第一个数组。对两个数组使用Ksort()函数怎么样?在两个数组上使用ksort()将改变两个数组的顺序,问题是将第二个数组的顺序与第一个数组的顺序对齐。我对它进行了表决,但可能没有结果,因为结果如下:
array('d'=>'ordered','b'=>'is','c'=>'now','a'=>'this',)
是的,右边是
array\u多排序(array\u键($arr1),排序描述,排序字符串,$arr2)不再!结果是
数组('a'=>'这个','c'=>'现在','b'=>'是','d'=>'有序',)
!我想,你没有测试你的答案。是的,我很抱歉,最好使用
array\u replace
,我希望现在它是对的。
$gamey = array ("wow" => "World of Warcraft", "gw2" => "Guild Wars2", "wiz101" => "Wizard 101");
$gamex = array ("gw2" => "best game", "wiz101" => "WTF?", "wow" => "World greatest");


function match_arrayKeys ($x, $y)
{
    $keys    = array_keys ($x);
    $values  = array_values ($y);

    for ($x = 0; $x < count ($keys); $x++)
    {
        $newarray [$keys[$x]] = $y[$keys[$x]];
    }
    return $newarray;
}

print_r (match_arrayKeys ($gamey, $gamex)); 
[wow] => World greatest
[gw2] => best game
[wiz101] => WTF?
$arr1 = [ 'x' => '42', 'y' => '551', 'a' => '512', 'b' => 'gge', ]; $arr2 = [ 'a' => 'ordered', 'x' => 'this', 'y' => 'is', 'b' => 'now', ]; $arr2 = array_replace($arr1, $arr2); [ 'x' => this, 'y' => is, 'a' => ordered, 'b' => now, ]