php - 如何使用整数数组重新映射我的数组键?
问题描述
这是我的原始项目数组
$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));
});
这可以正常工作,并产生正确的结果。
$items = [
2 => 'item 3',
0 => 'item 1',
1 => 'item 2'
];
但是,当在 Laravel 中将其作为 json 返回时,新排序的$items
会恢复到原始顺序,这显然不是我想要的。
有没有办法在重新排序时重新映射数组键?
解决方案
你究竟是如何在 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 数组。在这种情况下,您必须获取原始数据而不是格式化数据。
推荐阅读
- google-chrome-extension - 构建 Chrome 扩展时需要外部库
- json - 当 JSON 大小超过 65500 个字符时,golang 中的 Chrome 原生消息传递主机失败
- python - 如何从python中的字符串中只获取一部分
- java - 当我想在活动中抓取一个字符串时,我得到 NULL
- javascript - 在新页面上显示 ajax 结果
- javascript - 使用 Cordova 和 Framework7(v1) 降低元素的不透明度完全隐藏它
- python - 如何使用以前字典中的键和值创建字典?
- c - windows内存格式化问题
- reactjs - 对讲机必须双击才能出现菜单。
- scala - 在数据框 spark scala 的新列中显示多条记录的单行,总数记录为计数