按相同顺序对多个数组排序

时间:2016-01-17 19:31:53

标签: php arrays sorting

以下是我的数组

的示例
["value"]=>
  array(16) {
    [0]=>
    string(5) "4"
    [1]=>
    string(4) "2"
    [2]=>
    string(4) "1"
    [3]=>
    string(4) "3"

 }
  ["id"]=>
  array(16) {
    [0]=>
    string(4) "four-id"
    [1]=>
    string(4) "two-id"
    [2]=>
    string(4) "one-id"
    [3]=>
    string(4) "three-id" 
 }

现在我正在使用array_multisort($arr["value"],SORT_NUMERIC, SORT_DESC);,这会产生以下输出。

   ["value"]=>
      array(16) {
        [0]=>
        string(5) "4"
        [1]=>
        string(4) "3"
        [2]=>
        string(4) "2"
        [3]=>
        string(4) "1"

     }
      ["id"]=>
      array(16) {
        [0]=>
        string(4) "four-id"
        [1]=>
        string(4) "two-id"
        [2]=>
        string(4) "one-id"
        [3]=>
        string(4) "three-id" 
     }

我希望$arr["id"]根据$arr["value"]的相同排序顺序进行排序,如下所示

      ["id"]=>
      array(16) {
        [0]=>
        string(4) "four-id"
        [1]=>
        string(4) "three-id"
        [2]=>
        string(4) "two-id"
        [3]=>
        string(4) "one-id" 
     }

1 个答案:

答案 0 :(得分:0)

您可以使用krsort

$array_1 = Array(4,2,1,3);
$array_2 = Array('four-id','two-id','one-id','three-id');

foreach ($array_1 as $key => $value) {
    $array_merged[$value] = $array_2[$key];
}

krsort($array_merged);

foreach ($array_merged as $key => $value) {
    $new_array_1[] = $key;
    $new_array_2[] = $value;
}

echo '<pre>'.print_r( $new_array_1, true ).print_r( $new_array_2, true ).'</pre>';
相关问题