本文来自GitHub开源项目点我跳转30秒的PHP代码片段精选的有用PHP片段集合,您可以在30秒或更短的时间内理解这些片段。字符串endsWith判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回true,否则返回false。function endsWith($haystack, $needle){ return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));}ExamplesendsWith(‘Hi, this is me’, ‘me’); // truefirstStringBetween返回参数start和end中字符串之间的第一个字符串。function firstStringBetween($haystack, $start, $end){ return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);}ExamplesfirstStringBetween(‘This is a [custom] string’, ‘[’, ‘]’); // customisAnagram检查一个字符串是否是另一个字符串的变位元(不区分大小写,忽略空格、标点符号和特殊字符)。就是所谓的字谜function isAnagram($string1, $string2){ return count_chars($string1, 1) === count_chars($string2, 1);}ExamplesisAnagram(‘fuck’, ‘fcuk’); // trueisAnagram(‘fuckme’, ‘fuckyou’); // falseisLowerCase如果给定字符串是小写的,则返回true,否则返回false。function isLowerCase($string){ return $string === strtolower($string);}ExamplesisLowerCase(‘Morning shows the day!’); // falseisLowerCase(‘hello’); // trueisLowerCase如果给定字符串为大写,则返回true,否则返回false。function isUpperCase($string){ return $string === strtoupper($string);}ExamplesisUpperCase(‘MORNING SHOWS THE DAY!’); // trueisUpperCase(‘qUick Fox’); // falsepalindrome如果给定字符串是回文,则返回true,否则返回false。回文,顾名思义,即从前往后读和从后往前读是相等的function palindrome($string){ return strrev($string) === (string) $string;}Examplespalindrome(‘racecar’); // truepalindrome(2221222); // truestartsWith检查字符串是否是以指定子字符串开头,如果是则返回true,否则返回false。function startsWith($haystack, $needle){ return strpos($haystack, $needle) === 0;}ExamplesstartsWith(‘Hi, this is me’, ‘Hi’); // truecountVowels返回给定字符串中的元音数。使用正则表达式来计算字符串中元音(A, E, I, O, U)的数量。function countVowels($string){ preg_match_all(’/[aeiou]/i’, $string, $matches); return count($matches[0]);}ExamplescountVowels(‘sampleInput’); // 4decapitalize使字符串的第一个字母去大写。对字符串的第一个字母进行无头化,然后将其与字符串的其他部分相加。省略upperRest参数以保持字符串的其余部分完整,或将其设置为true以转换为大写。function decapitalize($string, $upperRest = false){ return lcfirst($upperRest ? strtoupper($string) : $string);}Examplesdecapitalize(‘FooBar’); // ‘fooBar’isContains检查给定字符串输入中是否存在单词或者子字符串。使用strpos查找字符串中第一个出现的子字符串的位置。返回true或false。function isContains($string, $needle){ return strpos($string, $needle);}ExamplesisContains(‘This is an example string’, ’example’); // trueisContains(‘This is an example string’, ‘hello’); // false函数compose返回一个将多个函数组合成单个可调用函数的新函数。function compose(…$functions){ return array_reduce( $functions, function ($carry, $function) { return function ($x) use ($carry, $function) { return $function($carry($x)); }; }, function ($x) { return $x; } );}…为可变数量的参数,http://php.net/manual/zh/func…Examples$compose = compose( // add 2 function ($x) { return $x + 2; }, // multiply 4 function ($x) { return $x * 4; });$compose(3); // 20memoize创建一个会缓存func结果的函数,可以看做是全局函数。function memoize($func){ return function () use ($func) { static $cache = []; $args = func_get_args(); $key = serialize($args); $cached = true; if (!isset($cache[$key])) { $cache[$key] = $func(…$args); $cached = false; } return [‘result’ => $cache[$key], ‘cached’ => $cached]; };}Examples$memoizedAdd = memoize( function ($num) { return $num + 10; });var_dump($memoizedAdd(5)); // [‘result’ => 15, ‘cached’ => false]var_dump($memoizedAdd(6)); // [‘result’ => 16, ‘cached’ => false]var_dump($memoizedAdd(5)); // [‘result’ => 15, ‘cached’ => true]curry(柯里化)把函数与传递给他的参数相结合,产生一个新的函数。function curry($function){ $accumulator = function ($arguments) use ($function, &$accumulator) { return function (…$args) use ($function, $arguments, $accumulator) { $arguments = array_merge($arguments, $args); $reflection = new ReflectionFunction($function); $totalArguments = $reflection->getNumberOfRequiredParameters(); if ($totalArguments <= count($arguments)) { return $function(…$arguments); } return $accumulator($arguments); }; }; return $accumulator([]);}Examples$curriedAdd = curry( function ($a, $b) { return $a + $b; });$add10 = $curriedAdd(10);var_dump($add10(15)); // 25once只能调用一个函数一次。function once($function){ return function (…$args) use ($function) { static $called = false; if ($called) { return; } $called = true; return $function(…$args); };}Examples$add = function ($a, $b) { return $a + $b;};$once = once($add);var_dump($once(10, 5)); // 15var_dump($once(20, 10)); // nullvariadicFunction(变长参数函数)变长参数函数允许使用者捕获一个函数的可变数量的参数。函数接受任意数量的变量来执行代码。它使用for循环遍历参数。function variadicFunction($operands){ $sum = 0; foreach($operands as $singleOperand) { $sum += $singleOperand; } return $sum;}ExamplesvariadicFunction([1, 2]); // 3variadicFunction([1, 2, 3, 4]); // 10相关文章:30秒的PHP代码片段(1)数组 - Array30秒的PHP代码片段(2)数学 - Math