本文来自GitHub开源项目点我跳转30秒的PHP代码片段精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。排列all如果所提供的函数返回 true 的数量等于数组中成员数量的总和,则函数返回 true,否则返回 false。function all($items, $func){ return count(array_filter($items, $func)) === count($items);}Examplesall([2, 3, 4, 5], function ($item) { return $item > 1;}); // trueany如果提供的函数对数组中的至少一个元素返回true,则返回true,否则返回false。function any($items, $func){ return count(array_filter($items, $func)) > 0;}Examplesany([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;}ExamplesdeepFlatten([1, [2], [[3], 4], 5]); // [1, 2, 3, 4, 5]drop返回一个新数组,并从左侧弹出n个元素。function drop($items, $n = 1){ return array_slice($items, $n);}Examplesdrop([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);}ExamplesfindLast([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);}ExamplesfindLastIndex([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;}Examplesflatten([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;}ExamplesgroupBy([‘one’, ’two’, ’three’], ‘strlen’); // [3 => [‘one’, ’two’], 5 => [’three’]]hasDuplicates(查重)检查数组中的重复值。如果存在重复值,则返回true;如果所有值都是唯一的,则返回false。function hasDuplicates($items){ return count($items) > count(array_unique($items));}ExampleshasDuplicates([1, 2, 3, 4, 5, 5]); // truehead返回数组中的第一个元素。function head($items){ return reset($items);}Exampleshead([1, 2, 3]); // 1last返回数组中的最后一个元素。function head($items){ return reset($items);}Exampleslast([1, 2, 3]); // 3pluck检索给定键名的所有键值function pluck($items, $key){ return array_map( function($item) use ($key) { return is_object($item) ? $item->$key : $item[$key]; }, $items);}Examplespluck([ [‘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)));}Examplesreject([‘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);}Examplesremove([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;}Examplestail([1, 2, 3]); // [2, 3]take返回一个数组,其中从开头删除了n个元素。function take($items, $n = 1){ return array_slice($items, 0, $n);}Examplestake([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));}Exampleswithout([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);}ExamplesorderBy( [ [‘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’]]
...