30秒的PHP代码片段(1)数组 - Array
本文来自GitHub开源项目
点我跳转
30秒的PHP代码片段
精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。
排列
all
如果所提供的函数返回 true
的数量等于数组中成员数量的总和,则函数返回 true
,否则返回 false
。
function all($items, $func)
{return count(array_filter($items, $func)) === count($items);
}
Examples
all([2, 3, 4, 5], function ($item) {return $item > 1;
}); // true
any
如果提供的函数对数组中的至少一个元素返回true
,则返回true
,否则返回false
。
function any($items, $func)
{return count(array_filter($items, $func)) > 0;
}
Examples
any([1, 2, 3, 4], function ($item) {return $item < 2;
}); // true
deepFlatten(深度平铺数组)
将多维数组转为一维数组
function deepFlatten($items)
{$result = [];foreach ($items as $item) {if (!is_array($item)) {$result[] = $item;} else {$result = array_merge($result, deepFlatten($item));}}return $result;
}
Examples
deepFlatten([1, [2], [[3], 4], 5]); // [1, 2, 3, 4, 5]
drop
返回一个新数组,并从左侧弹出n
个元素。
function drop($items, $n = 1)
{return array_slice($items, $n);
}
Examples
drop([1, 2, 3]); // [2,3]
drop([1, 2, 3], 2); // [3]
findLast
返回所提供的函数为其返回的有效值(即过滤后的值)的最后一个元素的键值(value
)。
function findLast($items, $func)
{$filteredItems = array_filter($items, $func);return array_pop($filteredItems);
}
Examples
findLast([1, 2, 3, 4], function ($n) {return ($n % 2) === 1;
});
// 3
findLastIndex
返回所提供的函数为其返回的有效值(即过滤后的值)的最后一个元素的键名(key
)。
function findLastIndex($items, $func)
{$keys = array_keys(array_filter($items, $func));return array_pop($keys);
}
Examples
findLastIndex([1, 2, 3, 4], function ($n) {return ($n % 2) === 1;
});
// 2
flatten(平铺数组)
将数组降为一维数组
function flatten($items)
{$result = [];foreach ($items as $item) {if (!is_array($item)) {$result[] = $item;} else {$result = array_merge($result, array_values($item));}}return $result;
}
Examples
flatten([1, [2], 3, 4]); // [1, 2, 3, 4]
groupBy
根据给定的函数对数组的元素进行分组。
function groupBy($items, $func)
{$group = [];foreach ($items as $item) {if ((!is_string($func) && is_callable($func)) || function_exists($func)) {$key = call_user_func($func, $item);$group[$key][] = $item;} elseif (is_object($item)) {$group[$item->{$func}][] = $item;} elseif (isset($item[$func])) {$group[$item[$func]][] = $item;}}return $group;
}
Examples
groupBy(['one', 'two', 'three'], 'strlen'); // [3 => ['one', 'two'], 5 => ['three']]
hasDuplicates(查重)
检查数组中的重复值。如果存在重复值,则返回true
;如果所有值都是唯一的,则返回false
。
function hasDuplicates($items)
{return count($items) > count(array_unique($items));
}
Examples
hasDuplicates([1, 2, 3, 4, 5, 5]); // true
head
返回数组中的第一个元素。
function head($items)
{return reset($items);
}
Examples
head([1, 2, 3]); // 1
last
返回数组中的最后一个元素。
function last($items)
{return end($items);
}
Examples
last([1, 2, 3]); // 3
pluck
检索给定键名的所有键值
function pluck($items, $key)
{return array_map( function($item) use ($key) {return is_object($item) ? $item->$key : $item[$key];}, $items);
}
Examples
pluck([['product_id' => 'prod-100', 'name' => 'Desk'],['product_id' => 'prod-200', 'name' => 'Chair'],
], 'name');
// ['Desk', 'Chair']
pull
修改原始数组以过滤掉指定的值。
function pull(&$items, ...$params)
{$items = array_values(array_diff($items, $params));return $items;
}
Examples
$items = ['a', 'b', 'c', 'a', 'b', 'c'];
pull($items, 'a', 'c'); // $items will be ['b', 'b']
reject
使用给定的回调筛选数组。
function reject($items, $func)
{return array_values(array_diff($items, array_filter($items, $func)));
}
Examples
reject(['Apple', 'Pear', 'Kiwi', 'Banana'], function ($item) {return strlen($item) > 4;
}); // ['Pear', 'Kiwi']
remove
从给定函数返回false
的数组中删除元素。
function remove($items, $func)
{$filtered = array_filter($items, $func);return array_diff_key($items, $filtered);
}
Examples
remove([1, 2, 3, 4], function ($n) {return ($n % 2) === 0;
});
// [0 => 1, 2 => 3]
tail
返回数组中的所有元素,第一个元素除外。
function tail($items)
{return count($items) > 1 ? array_slice($items, 1) : $items;
}
Examples
tail([1, 2, 3]); // [2, 3]
take
返回一个数组,其中从开头删除了n
个元素。
function take($items, $n = 1)
{return array_slice($items, 0, $n);
}
Examples
take([1, 2, 3], 5); // [1, 2, 3]
take([1, 2, 3, 4, 5], 2); // [1, 2]
without
筛选出给定值之外的数组元素。
function without($items, ...$params)
{return array_values(array_diff($items, $params));
}
Examples
without([2, 1, 2, 3, 5, 8], 1, 2, 8); // [3, 5]
orderBy
按键名对数组或对象的集合进行排序。
function orderBy($items, $attr, $order)
{$sortedItems = [];foreach ($items as $item) {$key = is_object($item) ? $item->{$attr} : $item[$attr];$sortedItems[$key] = $item;}if ($order === 'desc') {krsort($sortedItems);} else {ksort($sortedItems);}return array_values($sortedItems);
}
Examples
orderBy([['id' => 2, 'name' => 'Joy'],['id' => 3, 'name' => 'Khaja'],['id' => 1, 'name' => 'Raja']],'id','desc'
); // [['id' => 3, 'name' => 'Khaja'], ['id' => 2, 'name' => 'Joy'], ['id' => 1, 'name' => 'Raja']]
相关文章:
30秒的PHP代码片段(2)数学 - Math
30秒的PHP代码片段(3)字符串-String & 函数-Function
30秒的PHP代码片段(1)数组 - Array相关推荐
- 30秒的PHP代码片段(3)字符串-String 函数-Function
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 字符串 endsWith 判断字符串是否以指定后缀结尾,如果以指定 ...
- 30秒的PHP代码片段(2)数学 - Math
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 数学函数 average 返回两个或多个数字的平均值. funct ...
- 30秒的PHP代码片段-MATH
本文来自GitHub开源项目 点我跳转 30秒的PHP代码片段 精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段. 数学函数 average 返回两个或多个数字的平均值. funct ...
- web简易计算器代码_30秒内便能学会的30个超实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 超实用的30 个简短的代码片段(一)
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:NicePython PS:如有需要Python学习资料的小伙伴可以加 ...
- 30秒内便能学会的30个超实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 第十一期:30秒内便能学会的30个实用Python代码片段
许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...
- 30个超实用Python代码片段
版权声明:本文为博主'读芯术'原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/duxinshuxiaobia ...
- VSCode自定义代码片段10—— 数组的响应式方法
数组的响应式方法 {// arr'fuction// 10 如何自定义用户代码片段:VSCode =>左下角设置 =>用户代码片段 =>新建全局代码片段文件... => 自定义 ...
最新文章
- 备份集过期时间_TiDB备份恢复方式你知多少?
- A Sequence-Based Novel Approach for Quality Evaluation of Third-Generation Sequencing Reads
- POJ 3225 Help with Intervals(线段树)
- TensorFlow实现卷积、池化操作
- linux yast 软件管理_系统管理工具 Spacewalk
- 项目经理的商务指南系列之四:认识谈判(不做传声筒,不做顶门闩,进退之策,进退之法,有机事者必有机心)...
- 云计算成了“晕技术”就对了
- Linux 高性能服务器编程——多进程编程
- 平滑滤波器模板尺寸与平滑效果的关系_冲压模具丨折弯尺寸、毛刺、、卯合、滑块不顺的根源...
- 数学建模--层次分析法
- vue移动端实现word在线预览
- 玩觅伊的女孩,都是一些什么样的人?
- 浅谈微信与微博的区别
- h5 个推厂商消息 离线消息推送
- 计算机无法打开命令,电脑点击运行cmd打不开怎么办
- 你真的懂insert or update?
- 输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和
- oracle数据库优化之统计分析
- 2038年问题 linux内核5.6,Linux 5.1延续为2038年问题所做的多年准备
- 企业信息安全注意事项
热门文章
- 让打开文件夹直接在某路径打开
- Android studio修改Logcat颜色
- C++多重继承时调用相应的父类函数
- 修改Win7远程桌面端口
- UVa 11044 - Searching for Nessy
- mysql更换主键遇到的一个问题
- 请问:如何在C#简单分布式程序的数据层中为其它层留出很好的接口?????...
- 大数据之-Hadoop3.x_MapReduce_WordCount编写_Mapper---大数据之hadoop3.x工作笔记0089
- 软考信息系统项目管理师2021_信息化与信息系统_项目管理阶段_方法_网络协议---软考高级之信息系统项目管理师003
- 持续集成部署Jenkins工作笔记0004---Subversion环境要求