2016-01-17 3 views
-1

Ниже приведен пример моего массиваСортировки множественного массив с таким же порядком

["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" 
} 

Теперь я sorrting с помощью 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" 
    } 
+0

Вы должны рассмотреть реструктурирование массив использовать ID в качестве ключа для значений, вы можете использовать затем пользовательскую функцию сортировки, как предлагается здесь http://stackoverflow.com/questions/34842331/how-to-shuffle-an-a rray-в-PHP-пока-еще-зная о-оригинал-индекс –

ответ

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>'; 
Смежные вопросы