Пользовательская сортировка многомерного массива по ключам подмассива с использованием другого массива

Вы перенесли приложение из более ранней версии Xcode? Если это так, то Xcode теперь делает предположение о вашем размере экрана, и вам нужно указать фактический размер экрана во время выполнения.

Существует два способа:

a) Если вы используете экран запуска.

Вам не хватает файла LaunchScreen.storyboard. Создайте файл LaunchScreen.storyboard и добавьте его в свой проект.

b) Если вы не используете экран запуска.

Перейдите в настройки вашей цели и выберите «Общие», затем «Приложение» Иконки и запуск изображений. Теперь установите «Launch Screen File» на ваш «main.storyboard» (или, если необходимо, другой раскадровки)

1
задан mickmackusa 16 January 2019 в 02:56
поделиться

1 ответ

Вы можете использовать usort() для $array1 и передать $array2 в качестве массива поиска порядка сортировки.

Код: ( Демонстрация )

$array1 = [
    [536870914 => 34213897],
    [536870914 => 34213905],
    [536870915 => 34213921],
    [536870914 => 34213913],
    [536870915 => 34213929],
    [536870917 => 34213937],
    [536870925 => 34218049],
];

$array2 = [
    536870925,
    536870914,
    536870915,
    536870917,
];

usort($array1, function($a, $b) use ($array2) {
    return array_search(key($a), $array2) <=> array_search(key($b), $array2);
});

var_export($array1);

Чтобы сделать этот процесс более эффективным, переверните поисковый массив заранее.

Код: ( Демонстрация )

$array2 = array_flip($array2);

usort($array1, function($a, $b) use ($array2) {
    return $array2[key($a)] <=> $array2[key($b)];
});

var_export($array1);

Если некоторые идентификаторы из массива1 не представлены в массиве2, вам необходимо определить, как эти выбросы должны быть отсортированы. Если вы не настроите пропущенные значения в массиве поиска, вы сгенерируете Уведомления и получите неожиданный результат сортировки.

Вот аналогичный пост, который предлагает некоторые рекомендации по этому вопросу:

https://stackoverflow.com/a/52754080/2943403

0
ответ дан mickmackusa 16 January 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: