11

2 つの配列があり、どちらも同じキー (異なる値) を持っていますが、配列 #2 の順序が異なります。最初の配列と同じ順序になるように、2 番目の配列を再ソートできるようにしたいと考えています。

これを素早くできる機能はありますか?

4

5 に答える 5

13

頭の中で考えることはできませんが、両方の配列でキーが同じである場合は、最初の配列をループして、そのキーの順序を使用して、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] ;
}
于 2012-09-09T11:44:41.900 に答える
6

使用できます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' => 今、

]
于 2016-02-25T17:46:08.650 に答える
0

これがあなたの後のものであるかどうかは完全にはわかりません。とにかく、配列が同じサイズのままである限り、これはあなたのために働くはずです。

$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?
于 2012-09-09T12:31:48.017 に答える
0
foreach(array_keys($array1) as $key)
{
  $tempArray[$key] = $array2[$key];
}
$array2 = $tempArray;
于 2012-09-09T11:49:48.150 に答える
-1

この
コードを試してください

$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()

于 2012-09-09T11:41:54.057 に答える