30秒のPHPコードフラグメント(3)文字列-string&関数-Function


GitHubオープンソースプロジェクトから
点私ジャンプ
30秒のPHPコードフラグメント
選択した有用なPHPフラグメントセットは、30秒以上で理解できます.
文字列
endsWith
文字列が指定した接尾辞で終わるかどうかを判断し、指定した接尾辞で終わるとtrue、そうでないとfalseを返します.
function endsWith($haystack, $needle)
{
    return strrpos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}

Examples
endsWith('Hi, this is me', 'me'); // true

firstStringBetween
パラメータstartendの文字列の間の最初の文字列を返します.
function firstStringBetween($haystack, $start, $end)
{
    return trim(strstr(strstr($haystack, $start), $end, true), $start . $end);
}

Examples
firstStringBetween('This is a [custom] string', '[', ']'); // custom

isAnagram
1つの文字列が別の文字列の変位元であるかどうかを確認します(大文字と小文字を区別せず、スペース、句読点、特殊文字を無視します).
いわゆる字なぞ
function isAnagram($string1, $string2)
{
    return count_chars($string1, 1) === count_chars($string2, 1);
}

Examples
isAnagram('fuck', 'fcuk'); // true
isAnagram('fuckme', 'fuckyou'); // false

isLowerCase
指定された文字列が小文字である場合、trueを返し、そうでない場合、falseを返します.
function isLowerCase($string)
{
    return $string === strtolower($string);
}

Examples
isLowerCase('Morning shows the day!'); // false
isLowerCase('hello'); // true

isUpperCase
指定された文字列が大文字である場合、trueを返します.そうでない場合、falseを返します.
function isUpperCase($string)
{
    return $string === strtoupper($string);
}

Examples
isUpperCase('MORNING SHOWS THE DAY!'); // true
isUpperCase('qUick Fox'); // false

palindrome
指定された文字列が返信文である場合、trueを返し、そうでない場合、falseを返します.
回文は、その名の通り、前から読むのと後ろから読むのとが等しい.
function palindrome($string)
{
    return strrev($string) === (string) $string;
}

Examples
palindrome('racecar'); // true
palindrome(2221222); // true

startsWith
文字列が固定子文字列で始まるかどうかを確認し、そうでなければtrueを返し、そうでなければfalseを返します.
function startsWith($haystack, $needle)
{
    return strpos($haystack, $needle) === 0;
}

Examples
startsWith('Hi, this is me', 'Hi'); // true

countVowels
指定した文字列の母音数を返します.正規表現を使用して、文字列内の母音(A, E, I, O, U)の数を計算します.
function countVowels($string)
{
    preg_match_all('/[aeiou]/i', $string, $matches);

    return count($matches[0]);
}

Examples
countVowels('sampleInput'); // 4

decapitalize
文字列の最初のアルファベットを大文字にします.文字列の最初の文字を無頭化し、文字列の他の部分に加算します.upperRestパラメータを省略して文字列の残りの部分を完全に保つか、trueに設定して大文字に変換します.
function decapitalize($string, $upperRest = false)
{
    return lcfirst($upperRest ? strtoupper($string) : $string);
}

Examples
decapitalize('FooBar'); // 'fooBar'

isContains
指定した文字列入力に単語またはサブ文字列が存在するかどうかを確認します.strposを使用して、文字列の最初のサブ文字列の位置を検索します.は、trueまたはfalseを返します.
function isContains($string, $needle)
{
    return strpos($string, $needle);
}

Examples
isContains('This is an example string', 'example'); // true
isContains('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); // 20

memoize 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)); // 25

once
1つの関数のみを呼び出すことができます.
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)); // 15
var_dump($once(20, 10)); // null

variadicFunction(変長パラメータ関数)
変長パラメータ関数を使用すると、使用者は関数の可変数のパラメータを取得できます.関数は、任意の数の変数を受け入れてコードを実行します.forループループパラメータを使用します.
function variadicFunction($operands)
{
    $sum = 0;
    foreach($operands as $singleOperand) {
        $sum += $singleOperand;
    }
    return $sum;
}

Examples
variadicFunction([1, 2]); // 3
variadicFunction([1, 2, 3, 4]); // 10

関連記事:30秒のPHPコードフラグメント(1)配列−Array 30秒のPHPコードフラグメント(2)数学−Math