私はそれらの少なくとも1つが指定された文字列で始まるされているかどうか、配列のすべての要素をチェックして、知りたい:配列のすべての要素を効率的にチェックする方法(strpos(...))
public function validateStringByPrefix(string $string, $prefix)
{
$valid = false;
if (is_string($prefix)) {
if (strpos($string, $prefix) === 0) {
$valid = true;
}
} elseif (is_array($prefix)) {
foreach ($prefix as $partPrefix) {
if (strpos($string, $partPrefix) === 0) {
$valid = true;
break;
}
}
}
return $valid;
}
は、それが可能に/どのように同じ、より効率的な方法を達成することです?
(それは安い方法だが、それは自分のアプリケーションに多くの時間を呼ばれていますので、でも最低限の改善が明らかにアプリケーションのパフォーマンスを向上させるかもしれません。)
サンプルデータを提供すると便利です –
大きな改善はありませんが、$ validをtrueに設定してループを終了する代わりに、trueを返し、返す代わりに$ validを返します。戻り値falseの場合 – b0ne
本当に文字列の開始点にあり、 'substr($ str、0、$ len)=== $ prefix'を使うだけですか?文字列が接頭辞と比べて長い場合は、より速くする必要がありますか?いつも通り - ベンチマークで確認する –