我有两个数组,它们具有相同的键(不同的值),但是数组#2的顺序不同。我希望能够重新排序第二个数组,使其与第一个数组的顺序相同。
是否有可以快速完成此操作的函数?
我头脑中暂时想不出具体的方法,但是如果这两个数组的键值相同,为什么不直接遍历第一个数组并使用它的键顺序创建一个新的数组,再将第二个数组的值填入呢?
$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] ;
}
array_replace
。
$arr1 = [
'x' => '42',
'y' => '551',
'a' => '512',
'b' => 'gge',
];$arr2
是foreach(array_keys($array1) as $key)
{
$tempArray[$key] = $array2[$key];
}
$array2 = $tempArray;
我不完全确定这是否符合您的要求。无论如何,只要数组保持相同的大小,那么这应该适用于您。
$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?
$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
查看PHP手册以了解ksort()
array ( 'd' => 'ordered', 'b' => 'is', 'c' => 'now', 'a' => 'this', )
- Boolean_Typearray_multisort(array_keys($arr1), SORT_DESC, SORT_STRING, $arr2);
。 - leninzprahyarray ( 'a' => 'this', 'c' => 'now', 'b' => 'is', 'd' => 'ordered', )
!我认为你没有测试你的答案。 - Boolean_Typearray_replace
,现在应该没问题了,希望如此。 - leninzprahy