Three arrays were built first: $array1, $array2, $array3. The last array was a combination of $array1 and $array2. $array1 was the keys of $array3 and $array2 was the values of $array3.
- The length of $array1 and $array1: 113 720
- The length of $array3: 111 582
$array3 had 2 138 element less than that of $array2 or $array1. The length difference was less than 2%.
Test one: Copied a piece of text from the daily news. The text had a length of 254 bytes. Time taken for conversion:
- str_replace( $array1, $array2, $text): 31 seconds
- strtr($text, $array3): 5 seconds
Test two: Increased the length of the string to convert to 2008 bytes. Time taken for conversion:
- str_replace( $array1, $array2, $text): 101 seconds
- strtr($text, $array3): 7 seconds
Obvious, strtr has significant advantage over str_replace.
// to use str_replace() $stime = time(); $test_text = test_string(); for ($i = 0; $i < 100; $i++) { str_replace($array1, $array2, $test_text); } echo '<li>1. ' . (time() - $stime) . " seconds</li>"; echo '<p>F ' . count($array1) . ' J ' . count($array2); // to use strtr() $stime = time(); for ($i = 0; $i < 100; $i++) { strtr($test_text, $array3); } echo '<li>2. ' . (time() - $stime) . " seconds</li>"; echo '<p>F2J ' . count($array3);
Test the speed of PHP functions: strtr and str_replace