Fungsi strtr dan str_replace dalam PHP kedua-duanya melakukan penggantian rentetan, tetapi terdapat beberapa perbezaan halus antara tingkah laku mereka.
Perbezaan Pertama: Perintah Penggantian
strtr menyusun pasangan gantiannya mengikut panjang dalam tertib menurun, manakala str_replace memprosesnya mengikut tertib yang ditentukan . Ini boleh membawa kepada hasil yang berbeza apabila menggantikan berbilang subrentetan dalam rentetan. Pertimbangkan contoh berikut:
<code class="php">$text = 'test string'; echo strtr($text, 'st', 'XY') . "\n"; echo str_replace(['s', 't', 'st'], ['X', 'Y', 'Z'], $text) . "\n";</code>
Ini akan mengeluarkan:
YeXY XYring YeXY XYring
Dalam kes pertama, strtr menggantikan subrentetan yang lebih panjang "st" dahulu, manakala dalam kes kedua, str_replace menggantikan "s" dahulu. Akibatnya, keluaran akhir adalah berbeza.
Perbezaan Kedua: Keutamaan Penggantian
strtr memberi keutamaan yang lebih tinggi kepada pasangan gantian yang lebih lama, manakala str_replace memberi keutamaan kepada kejadian pertama daripada subrentetan. Ini juga boleh membawa kepada hasil yang berbeza apabila menggantikan berbilang subrentetan. Pertimbangkan contoh berikut:
<code class="php">$text = 'ZBB2'; echo str_replace(['1', '2', '3', 'B'], ['A', 'B', 'C', 'D'], $text) . "\n"; echo strtr($text, ['1' => 'A', '2' => 'B', '3' => 'C', 'B' => 'D']) . "\n";</code>
Ini akan mengeluarkan:
ZDDD ZDDB
Dalam kes pertama, str_replace menggantikan "B" dengan "D" dahulu, yang kemudiannya membawa kepada "BB2" digantikan dengan "DD2". Dalam kes kedua, strtr menggantikan "B" dengan "D" dahulu, yang kemudiannya membawa kepada "ZBB2" digantikan dengan "ZDDB".
Bila Gunakan Fungsi Mana
Secara amnya, strtr lebih sesuai untuk penggantian rentetan ringkas di mana susunan penggantian tidak penting. str_replace, sebaliknya, lebih sesuai untuk penggantian yang lebih kompleks di mana susunan penggantian adalah penting atau di mana anda perlu mengawal keutamaan penggantian.
Atas ialah kandungan terperinci Bilakah anda harus menggunakan `strtr` berbanding `str_replace` dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!