我有这个数组$arr1
Array
(
[0] => [col1]
[1] => [col2]
[2] => [col3]
)
我有另一个数组$arr2
为
Array
(
[0] => Array
(
[col3] => data1
[col2] => data2
[col1] => data3
)
[1] => Array
(
[col2] => data1
[col3] => data2
[col1] => data3
)
)
我需要将此$arr2
个密钥排序为col1, col2
和col3
,就像$arr1
一样。
我尝试了array_multisort($arr1,$arr2)
,反之亦然。没有任何效果。对此有何帮助?
答案 0 :(得分:2)
使用循环。
$keys = array_values($arr1);
$out = array();
foreach($arr2 as $ar){
$outar = array();
foreach($keys as $k){
if(isset($ar[$k])){
$outar[$k]=$ar[$k];
}
}
$out[]=$outar;
}
输出数组将保存在$out
中。请参阅ideone。
答案 1 :(得分:0)
foreach ( $arr2 as $k => &$arr ) {
ksort($arr);
}
print_r($arr2);
将ksort与foreach循环一起使用,其值通过引用传递。
答案 2 :(得分:0)
你可以用uksort和一个闭包(PHP 5.3 +)
来做到这一点foreach($arr2 as &$array){
uksort($array,function($a,$b) use ($arr1){
return array_search($a, $arr1) - array_search($b, $arr1);
});
}
答案 3 :(得分:0)
如果第一个数组值完全与第二个数组中的索引相同,请尝试
$resarr = array();
foreach ($arr2 as $somearr) {
$i = 0;
$newarr = array();
foreach ($somearr as $value) {
$newarr[$arr1[$i]] = $value;
$i++;
}
$resarr[] = $newarr;
}
$arr1 = $resarr;