当前位置:网站首页>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
边栏推荐
- CTF three count
- MySQL index
- DeprecationWarning: . ix is deprecated. Please use. loc for label based indexing or. iloc for positi
- sqli-labs通关汇总-page3
- UEditor . Net version arbitrary file upload vulnerability recurrence
- Latex 编译报错 I found no \bibstyle & \bibdata & \citation command
- In depth study of JVM bottom layer (3): garbage collector and memory allocation strategy
- Fe - use of weex development weex UI components and configuration use
- Sentry搭建和使用
- js判断对象是否为空
猜你喜欢

Pytest (1) case collection rules

The use of regular expressions in JS

Sqli labs customs clearance summary-page4

sqli-labs通关汇总-page2

sqli-labs通关汇总-page1

Sqli-labs customs clearance (less6-less14)

Sentry construction and use

Sqli - Labs Clearance (less6 - less14)

SQL注入闭合判断

Latex 报错 LaTeX Error: The font size command \normalsize is not defined问题解决
随机推荐
Fe - weex uses a simple encapsulated data loading plug-in as the global loading method
QQ email cannot receive the email sent by Jenkins using email extension after construction (timestamp or auth...)
Automation - when Jenkins pipline executes the nodejs command, it prompts node: command not found
sqli-labs通关汇总-page3
在php的开发环境中如何调取WebService?
uniapp引入本地字体
Win10: add or delete boot items, and add user-defined boot files to boot items
如何调试微信内置浏览器应用(企业号、公众号、订阅号)
Tool grass welfare post
JS to determine whether there is a value in the object in the array
pm2简单使用和守护进程
Implement strstr() II
Browser scrolling for more implementations
Differences between ts and JS
Nodejs - Express middleware modification header: typeerror [err_invalid_char]: invalid character in header content
JS divides an array into groups of three
Latex参考文献引用失败 报错 LaTeX Warning: Citation “*****” on page y undefined on input line *
SQLI-LABS通关(less1)
Sublime text configuring PHP compilation environment
Présence d'une panne de courant anormale; Problème de gestion de la fsck d'exécution résolu