[array1] => Array
(
[23456] => Array
(
[id] => 1
[info] => info
)
[78933] => Array
(
[id] => 1
[info] => info
)
)
等等....
[orderarray] => Array
(
[0] => Array
(
[id] => 78933
)
[1] => Array
(
[id] => 23456
)
)
我想按订单array id的值重新排序array1键。
因此,第一个键应为78933,而不像Array1 23456中的第一个键。 有人知道如何继续吗?
我知道要读取Array1的键。
foreach ($array1 as $key)
{
echo $key;
}
foreach ($orderarray as $key)
{
foreach ($key as $id => val)
{
echo $val;
}
}
那么,我如何以最好的方式合并两个呢? 非常感谢!
您可以使用
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);
?>
从订单array中创建映射数组,其中ID值成为键,并且从原始索引中绘制值。 然后按照查找/映射数组中的相关值对主数组进行排序。 demo
foreach ($orderarray as $map[$id] => ['id' => $id]);
uksort($array, fn($a, $b) => $map[$a] <=> $map[$b]);
var_export($array);
$array
中发现的所有值都在$orderarray
中找到。 它还假设
$array
可能不包含
$orderarray
中发现的所有ID,因为如果两个数组始终且仅包含相关数据,那么只能迭代
$orderarray
并在该数据上执行关键搜索会更简单$array
.