如果所提供的函数返回 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;}); // trueany
如果提供的函数对数组中的至少一个元素返回 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;}); // truedeepFlatten(深度平铺数组)
将多维数组转为一维数组。
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
返回一个新数组,并从左侧d出 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;});// 3findLastIndex
返回所提供的函数为其返回的有效值(即过滤后的值)的最后一个元素的键名( 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;});// 2flatten(平铺数组)
将数组降为一维数组。
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]); // truehead
返回数组中的第一个元素。
function head($items){ return reset($items);}
Examples:
head([1, 2, 3]); // 1last
返回数组中的最后一个元素。
function last($items){ return end($items);}
Examples:
last([1, 2, 3]); // 3pluck
检索给定键名的所有键值。
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
使用给定的回调筛选数组。
reject(['Apple', 'Pear', 'Kiwi', 'Banana'], function ($item) { return strlen($item) > 4;}); // ['Pear', 'Kiwi']
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:
( [ ['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代码片段(3)字符串-String & 函数-Function
总结以上是内存溢出为你收集整理的30 秒理解 PHP 代码片段(1)数组 - Array全部内容,希望文章能够帮你解决30 秒理解 PHP 代码片段(1)数组 - Array所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)