我要檢查的數組中的所有元素,並找出,是否其中至少有一個前綴由給定的字符串:如何有效檢查(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 set返回false – b0ne
如果它真的是在字符串的開始,然後使用'substr($ str,0,$ len)=== $ prefix'?如果字符串比前綴長,應該更快?像往常一樣 - 基準確認 –