2 つの配列があり、どちらも同じキー (異なる値) を持っていますが、配列 #2 の順序が異なります。最初の配列と同じ順序になるように、2 番目の配列を再ソートできるようにしたいと考えています。
これを素早くできる機能はありますか?
頭の中で考えることはできませんが、両方の配列でキーが同じである場合は、最初の配列をループして、そのキーの順序を使用して、2番目の値を使用して新しい配列を作成しないでください。 1?
$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 = [ 'a' => '注文済み', 'x' => 'これ', 'y' => 'である', 'b' => '今', ]; $arr2 = array_replace($arr1, $arr2);
$arr2
今でしょ
[ 「x」=>これ、 'y' => は、 'a' => 注文済み、 'b' => 今、 ]
これがあなたの後のものであるかどうかは完全にはわかりません。とにかく、配列が同じサイズのままである限り、これはあなたのために働くはずです。
$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?
foreach(array_keys($array1) as $key)
{
$tempArray[$key] = $array2[$key];
}
$array2 = $tempArray;
この
コードを試してください
$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()