基于一维数组的PHP多维数组重排序
多维数组基于一维数组的PHP多维数组重排序,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,多维数组 Array ( [0] => Array ( [ID] => 5068 [Item] => 2737 [Unit] => 15 ) [1] => Array ( [ID] => 5067 [Item] => 2737 [Unit] =>
Array
(
[0] => Array
(
[ID] => 5068
[Item] => 2737
[Unit] => 15
)
[1] => Array
(
[ID] => 5067
[Item] => 2737
[Unit] => 13
)
)
Array (
[0] => 11
[1] => 13
[2] => 15
)
一维阵列
Array
(
[0] => Array
(
[ID] => 5068
[Item] => 2737
[Unit] => 15
)
[1] => Array
(
[ID] => 5067
[Item] => 2737
[Unit] => 13
)
)
Array (
[0] => 11
[1] => 13
[2] => 15
)
预期产出:
Array
(
[0] => Array
(
[ID] => 5067
[Item] => 2737
[Unit] => 13
)
[1] => Array
(
[ID] => 5068
[Item] => 2737
[Unit] => 15
)
)
一维数组不必按ASC/DESC顺序排列。我想根据基于单位值的一维数组对多维数组重新排序。我怎样才能做到这一点呢?也许类似的方法可以奏效
$multiDimArray = [
0 => [
'ID' => 5068,
'Item' => 2737,
'Unit' => 15
],
1 => [
'ID' => 5067,
'Item' => 2737,
'Unit' => 13
]
];
$singleDim = [
11,13,15
];
usort($multiDimArray,function($a,$b){
global $singleDim;
return ($singleDim[0] >= $a['Unit']) ? -1 :1;
});
print_r($multiDimArray);
我的后脑勺里有些东西告诉我我错过了什么。但是可以随意试一试。假设单个数组中的值都映射到
单元中的值,您可以循环单个维度数组,然后循环多维数组中的值
在内部循环中,使用In_array
检查多维数组中是否出现了来自一维数组的值。如果有,您可以将其添加到一个新数组中
$result = [];
foreach ($singleDimension as $sm) {
foreach ($multiDimensional as $md) {
if (in_array($sm, $md)) {
$result[] = $md;
}
}
}