当前位置:网站首页>php中通过集合collect的方法来实现把某个值插入到数组中指定的位置
php中通过集合collect的方法来实现把某个值插入到数组中指定的位置
2022-07-02 06:23:00 【夜空の雪風】
需求分析
最近在项目开发的过程中遇到列表中的排序要求按照能上下拖动的方式进行重新排序,例如:A,B,C,D,E。现在要把F插入到C后边,然后按照A,B,C,F,D,E进行排序。
解决方案
经过各种方法的尝试,发现通过集合collect中的一些方法可以快速的实现这个功能。
Thinkphp框架中和PHP原生项目可以直接通过composer安装。Laravel8中自带集合Illuminate\Support\Collection方法而可以直接进行使用。
//安装集合collect方法
composer require tightenco/collect
默认安装的为最新版本的安装包。
代码演示
/** * 实现在数组中的指定元素的前、后插入指定的值。 * @param [type] $sort 被插入的数组数据 * @param [type] $move_sort 要插入的元素 * @param [type] $choose_sort 被插入的元素 * @param [type] $type 1前方插入,2后方插入 * @return void */
function sort_edit($sort, $move_sort, $choose_sort, $type)
{
$sortCollection = collect($sort);
$index = $sortCollection->search($choose_sort);
[$left, $right] = $sortCollection->filter(function ($item) use ($move_sort) {
return $item != $move_sort;
})
->partition(function ($item, $key) use ($index, $type) {
if ($type == 1) {
return $key < $index;
} else {
return $key <= $index;
}
});
$left->push($move_sort);
return $left->values()->merge($right->values());
}
使用方法
$sort = [1, 2, 3, 4, 5, 6, 7, 8];
$move_sort = 9;
$choose_sort = 3;
$type = 2;
sort_edit($sort, $move_sort, $choose_sort, $type)
结果演示
9排到了3的后边
{
"status": 200,
"message": "操作成功",
"data": [
1,
2,
3,
9,
4,
5,
6,
7,
8
]
}
方法分析
search 方法在集合中搜索给定的值并返回它的键。如果没有找到,则返回 false 。
filter 方法使用给定的回调函数过滤集合,只保留那些通过指定条件测试的集合项。
partition 是可以和 PHP 的 list 方法配合使用,利用回调返回是否为真来分开通过指定条件的元素以及那些不通过指定条件的元素。
附上集合文档。https://learnku.com/docs/laravel/8.x/collections/9390
边栏推荐
- Browser scrolling for more implementations
- Linux MySQL 5.6.51 community generic installation tutorial
- Latex error: the font size command \normalsize is not defined problem solved
- JS countdown case
- Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
- 2021-07-05C#/CAD二次开发创建圆弧(4)
- The use of regular expressions in JS
- 20201025 visual studio2019 qt5.14 use of signal and slot functions
- CTF web practice competition
- uniapp引入本地字体
猜你喜欢

20201002 vs 2019 qt5.14 developed program packaging

uniapp引入本地字体

Latex compilation error I found no \bibstyle &\bibdata &\citation command

Win10: add or delete boot items, and add user-defined boot files to boot items

CTF three count

The use of regular expressions in JS

CVE-2015-1635(MS15-034 )遠程代碼執行漏洞複現

SQLI-LABS通关(less18-less20)

No process runs when querying GPU, but the video memory is occupied

Latex 报错 LaTeX Error: The font size command \normalsize is not defined问题解决
随机推荐
Deployment API_ automation_ Problems encountered during test
SQLI-LABS通关(less2-less5)
查询GPU时无进程运行,但是显存却被占用了
Vscode installation, latex environment, parameter configuration, common problem solving
Differences between ts and JS
Browser scrolling for more implementations
Sentry搭建和使用
SQL injection closure judgment
js中map和forEach的用法
Fe - use of weex development weex UI components and configuration use
js把一个数组分割成每三个一组
Automation - when Jenkins pipline executes the nodejs command, it prompts node: command not found
Utilisation de la carte et de foreach dans JS
Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
ZZQ的博客目录--更新于20210601
js的防抖和节流
Log - 7 - record a major error in missing documents (A4 paper)
uniapp引入本地字体
Fe - eggjs combined with typeorm cannot connect to the database
Anti shake and throttling of JS