Сортировка массива с использованием массива - PullRequest
1 голос
/ 23 сентября 2011
$sortPattern= array(1,2,8,4);
$toSort = array(2,4,8,18,16,26);

Теперь нам нужно отсортировать массив $toSort в соответствии с $sortPattern.

У нас должен быть результат

$result = array(2,8,4,18,16,26);

Кто-нибудь знает функцию для этого, или мы должны написать свою собственную функцию, чтобы выполнить это?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Да, вам нужно написать собственную функцию сортировки и применить ее с usort(). В вашем обратном вызове вы бы сделали что-то вроде:

if ( $a == $b ) {
    return 0;
} elseif ( array_search( $a, $sortPattern ) < array_search( $b, $sortPattern ) {
    return -1;
} else {
    return 1;
}
0 голосов
/ 23 сентября 2011

Какое влияние $sortPattern оказывает на $toSort?

Похоже, что:

$result = array_merge(
    array_intersect($sortPattern, $toSort), // 2, 8, 4
    array_diff($toSort, $sortPattern)       // 18, 16, 26
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...