Re: strpos() before str_replace()? Or, maybe strtr()? [message #184934 is a reply to message #184933] |
Sun, 16 February 2014 23:13 |
Ben Bacarisse
Messages: 82 Registered: November 2013
Karma:
|
Member |
|
|
Thomas 'PointedEars' Lahn <PointedEars(at)web(dot)de> writes:
> Ben Bacarisse wrote:
>
>> "J.O. Aho" <user(at)example(dot)net> writes:
>>> On 16/02/14 21:24, Ben Bacarisse wrote:
>>>> Thomas 'PointedEars' Lahn <PointedEars(at)web(dot)de> writes:
>>>> > Jason C wrote:
>>>> <snip>
>>>> >> I'm looping through roughly 100,000 values:
>>>> >>
>>>> >> $userArr = array(
>>>> >> "something" => "anything",
>>>> >> ...
>>>> >> );
>>>> >>
>>>> >> foreach ($userArr as $key => $val) {
>>>> >> $firstname = str_replace($key, "****", $firstname);
>>>> >> $lastname = str_replace($key, "****", $lastname);
>>>> >> }
>>>> >>
>>>> >> Both $firstname AND $lastname could contain any of the keys, but could
>>>> >> only potentially contain one key each. It's likely, though, that
>>>> >> neither will contain any of the keys.
>>>> <snip>
>>>> >> Would it be faster to use strpos() before each str_replace(), like
>>>> >> so?:
>>>> >>
>>>> >> foreach ($userArr as $key => $val) {
>>>> >> if (strpos($firstname, $key) !== false)
>>>> >> $firstname = str_replace($key, "****", $firstname);
>>>> >>
>>>> >> if (strpos($lastname, $key) !== false)
>>>> >> $lastname = str_replace($key, "****", $lastname);
>>>> >> }
>>>> >
>>>> > Most certainly not.
>>>>
>>>> And yet, when I measured it, it was faster. How can that be?
>>>>
>>>> <snip>
>>>
>>> For strpos is faster than str_replace on finding the string.
>
> How, and why? Both search for the occurrence of a substring in a
> string.
Because strpos has a lower per-call overhead.
<snip>
--
Ben.
|
|
|