Как переназначить ключи массива с помощью массива целых чисел? - PullRequest
1 голос
/ 05 мая 2020

Вот мой исходный массив элементов

$items = [
    0 => 'item 1',
    1 => 'item 2',
    2 => 'item 3'
];

Я хочу изменить порядок элементов в зависимости от их ключей, поэтому я делаю это ...

$reorder = [2,0,1];

uksort($items, function($key1, $key2) use ($reorder) {
    return (array_search($key1, $reorder) > array_search($key2, $reorder));
});

Это работает так, как должно, и дает правильные результаты. очевидно, это не то, что я хочу.

Есть ли способ переназначить ключи массива при их изменении?

1 Ответ

0 голосов
/ 05 мая 2020

Как именно вы возвращаете массив в Laravel? Следующий пример работает для меня именно так, как вы этого хотите.

Route::get('/test', function () {
    $items = [
        0 => 'item 1',
        1 => 'item 2',
        2 => 'item 3'
    ];

    $reorder = [2,0,1];
    uksort($items, function($key1, $key2) use ($reorder) {
        return (array_search($key1, $reorder) > array_search($key2, $reorder));
    });

    return response()->json($items);
    // {"2":"item 3","0":"item 1","1":"item 2"}
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...