Php - сортировать массив по ключу, чтобы соответствовать другому порядку массива по ключу

У меня есть два массива, оба имеют одинаковые ключи (разные значения), однако массив №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] ;
}

Ответ 2

Вы можете использовать array_replace

$arr1 = [
    'x' => '42', 
    'y' => '551',
    'a' => '512',
    'b' => 'gge',
];


$arr2 = [
    'a' => 'ordered',
    'x' => 'this',
    'y' => 'is',
    'b' => 'now',
];

$arr2 = array_replace($arr1, $arr2);

$arr2 теперь

[
    'x' => this,
    'y' => is,
    'a' => ordered,
    'b' => now,

]

Ответ 3

foreach(array_keys($array1) as $key)
{
  $tempArray[$key] = $array2[$key];
}
$array2 = $tempArray;

Ответ 4

Я не совсем уверен, что это то, что вы после. в любом случае, если массив остается одного и того же размера, чем это должно работать для вас.

$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?

Ответ 5

Попробуйте это
CODE

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