PHP сортировать массив в массиве путем сопоставления ключей

Я искал связанную тему, но не нашел похожую проблему.

У меня есть массив внутри массива, и у меня есть массив, который я определяю как мой упорядочивающий массив.

[array1] => Array
(
[23456] => Array
(
[id] => 1
[info] => info
)
[78933] => Array
(
[id] => 1
[info] => info
)
)

и так далее….

    [orderarray] => Array
(
[0] => Array
(
[id] => 78933
)
[1] => Array
(
[id] => 23456
)
)

Я хотел бы переупорядочить ключи array1 по значению orderarray id.

Таким образом, первый ключ должен быть 78933, а не как в массиве 23456.
Кто-нибудь знает, как это продолжить?

Я знаю, чтобы прочитать ключи от array1.

foreach ($array1 as $key)
{
echo $key;
}

foreach ($orderarray as $key)
{
foreach ($key as $id => val)
{
echo $val;
}
}

Итак, как я могу объединить оба foreach вместе наилучшим образом?
Спасибо вам большое!

1

Решение

Вы можете использовать пользовательскую функцию сортировки клавиш, используя uksort()

<?php

$array = array(
"23456" => array("id" => 1, "info" => "info"),
"78933" => array("id" => 1, "info" => "info")
);

$orderarray = array(
array("id" => 78933),
array("id" => 23456)
);

function customSort($a, $b) {
global $orderarray;
$_a = 0; $_b = 0;
foreach ($orderarray as $index => $order) {
$oid = intval($order['id']);
if ($oid == intval($a)) $_a = $index;
if ($oid == intval($b)) $_b = $index;
}
if ($_a == $_b) {
return 0;
}
return ($_a < $_b) ? -1 : 1;
}

uksort($array, "customSort");
print_r($array);

?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]