0

我有这个数组$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)了另一种方式。没有任何效果。有什么帮助吗?

4

4 回答 4

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

于 2013-07-27T08:18:04.057 回答
0
foreach ( $arr2 as $k => &$arr ) {
    ksort($arr);
}
print_r($arr2);

ksort与通过引用传递值的 foreach 循环一起使用。

于 2013-07-27T08:16:04.363 回答
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);
    });
}
于 2013-07-27T08:25:53.213 回答
0

如果第一个数组值与第二个数组中的索引完全相同,请尝试

$resarr = array();
foreach ($arr2 as $somearr) {
    $i = 0;
    $newarr = array();
    foreach ($somearr as $value) {
        $newarr[$arr1[$i]] = $value;
        $i++;
    }
    $resarr[] = $newarr;
}
$arr1 = $resarr;
于 2013-07-27T08:47:26.037 回答