当前位置: 首页 > 后端技术 > PHP

30秒PHP代码片段(三)String-String&Function-Function

时间:2023-03-30 03:26:14 PHP

短时间内理解这些片段。字符串endsWith判断字符串是否以指定后缀结尾,如果以指定后缀结尾则返回true,否则返回false。functionendsWith($haystack,$needle){returnstrrpos($haystack,$needle)===(strlen($haystack)-strlen($needle));}ExamplesendsWith('嗨,这是我','我');//truefirstStringBetween返回参数start和end中的字符串之间的第一个字符串。functionfirstStringBetween($haystack,$start,$end){returntrim(strstr(strstr($haystack,$start),$end,true),$start.$end);}ExamplesfirstStringBetween('这是一个[自定义]细绳','[',']');//customisAnagram检查一个字符串是否是另一个字符串的变位词(忽略大小写、空格、标点符号和特殊字符)。就是所谓的anagramfunctionisAnagram($string1,$string2){returncount_chars($string1,1)===count_chars($string2,1);}ExamplesisAnagram('fuck','fcuk');//trueisAnagram('fuckme','fuckyou');//falseisLowerCase如果给定的字符串是小写则返回true,否则返回false。functionisLowerCase($string){return$string===strtolower($string);}ExamplesLowerCase('Morningshowstheday!');//falseisLowerCase('你好');//trueisUpperCase如果给定的字符串是大写,则返回true,否则返回false。functionisUpperCase($string){return$string===strtoupper($string);}ExamplesisUpperCase('MORNINGSHOWSTHEDAY!');//trueisUpperCase('qUickFox');//如果给定的字符串是回文,则返回false,否则返回false。回文,顾名思义,从前到后和从后到前读都是相等的//真回文(2221222);//truestartsWith检查字符串是否以指定的子字符串开头,如果是则返回true,否则返回false。functionstartsWith($haystack,$needle){returnstrpos($haystack,$needle)===0;}ExamplesstartsWith('嗨,这是我','嗨');//truecountVowels返回给定字符串的元音数。使用正则表达式计算字符串中元音字母(A、E、I、O、U)的数量。函数countVowels($string){preg_match_all('/[aeiou]/i',$string,$matches);返回计数($matches[0]);}ExamplescountVowels('sampleInput');//4decapitalizethestring将第一个字母转为大写。去掉字符串的第一个字母,然后将其与字符串的其余部分相加。省略upperRest参数以保持字符串的其余部分完整,或将其设置为true以转换为大写。函数decapitalize($string,$upperRest=false){returnlcfirst($upperRest?strtoupper($string):$string);}Examplesdecapitalize('FooBar');//'fooBar'isContains检查给定的字符串输入Word或子字符串是否存在。使用strpos查找字符串中子字符串第一次出现的位置。返回真或假。functionisContains($string,$needle){returnstrpos($string,$needle);}ExamplesContains('Thisisanexamplestring','example');//trueisContains('这是一个示例字符串','你好');//false函数compose返回一个将多个函数组合成单个可调用函数的新函数。functioncompose(...$functions){returnarray_reduce($functions,function($carry,$function){返回函数($x)使用($carry,$function){return$function($carry($x));};},function($x){return$x;});}...是可变数量的参数,http://php.net/manual/zh/func...Examples$compose=compose(//加2函数($x){return$x+2;},//乘以4函数($x){return$x*4;});$撰写(3);//20memoize创建了一个缓存func结果的函数,可以看做是一个全局函数。functionmemoize($func){returnfunction()use($func){static$cache=[];$args=func_get_args();$键=序列化($args);$缓存=真;如果(!isset($cache[$key])){$cache[$key]=$func(...$args);$缓存=假;}return['result'=>$cache[$key],'cached'=>$cached];};}例子$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将函数与传递给它的参数结合起来生成一个新函数。functioncurry($function){$accumulator=function($arguments)use($function,&$accumulator){返回函数(...$args)use($function,$arguments,$accumulator){$arguments=array_merge($参数,$args);$reflection=newReflectionFunction($function);$totalArguments=$reflection->getNumberOfRequiredParameters();如果($totalArguments<=count($arguments)){返回$function(...$arguments);}返回$accumulator($arguments);};};return$accumulator([]);}例子$curriedAdd=curry(function($a,$b){return$a+$b;});$add10=$curriedAdd(10);var_dump($add10(15));//25once只能调用一个函数一次。functiononce($function){返回函数(...$args)使用($function){static$called=false;如果($被调用){返回;}$调用=真;返回$function(...$args);};}例子$add=function($a,$b){return$a+$b;};$once=once($add);var_dump($once(10,5));//15var_dump($once(20,10));//nullvariadicFunction(variable-lengthparameterfunction)可变长度参数函数允许用户捕获一个函数的可变数量的参数。函数接受任意数量的变量来执行代码。它使用for循环遍历参数。函数variadicFunction($operands){$sum=0;foreach($operandsas$singleOperand){$sum+=$singleOperand;}return$sum;}ExamplesvariadicFunction([1,2]);//3variadicFunction([1,2,3,4]);//10篇相关文章:30秒PHP代码片段(一)Array——Array30秒PHP代码片段(二)Math——数学

猜你喜欢