内容简介:精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。
本文来自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 head($items)
{
return reset($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']]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML and CSS
Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99
Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!