Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `strpos()` Mengembalikan 0, dan Bagaimana Saya Boleh Menyemak Kewujudan Substring dengan Amanah?

Mengapakah `strpos()` Mengembalikan 0, dan Bagaimana Saya Boleh Menyemak Kewujudan Substring dengan Amanah?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 06:09:09334semak imbas

Why Does `strpos()` Return 0, and How Can I Reliably Check for Substring Existence?

Memahami Nilai Pulangan Ciri-ciri strpos()

Apabila menggunakan strpos() untuk mencari subrentetan dalam rentetan tertentu, adalah penting untuk dipertimbangkan implikasi nilai pulangan. Kegagalan berbuat demikian boleh membawa kepada hasil yang tidak dijangka.

Isu:

Dalam percubaan untuk mengenal pasti kedudukan permulaan dua subrentetan dan memastikan yang pertama terletak sebelum yang kedua , seorang pengaturcara menghadapi tingkah laku yang tidak dijangka. Kod menyemak kehadiran setiap subrentetan dalam rentetan sasaran menggunakan operator perbandingan kesaksamaan longgar (<>). Jika nilai pulangan strpos() adalah palsu, ia menunjukkan bahawa subrentetan tidak dijumpai. Walau bagaimanapun, apabila subrentetan bermula pada kedudukan sifar, nampaknya strpos() mengembalikan 0, yang ditafsirkan secara salah sebagai palsu.

Resolusi:

Manual PHP secara eksplisit menyatakan bahawa strpos() boleh mengembalikan nilai Boolean FALSE atau bukan Boolean (mis., 0) yang nilaikan kepada SALAH. Untuk mengelakkan kekeliruan ini, PHP mengesyorkan menggunakan operator === (kesamaan ketat) untuk menguji nilai pulangan strpos().

Dalam contoh yang diberikan, pengaturcara harus menggantikan operator kesamaan longgar (<> ;) dengan pengendali kesaksamaan yang ketat (!==) dalam semakan strpos(). Ini akan memastikan bahawa perbandingan berfungsi seperti yang diharapkan, mengenal pasti dengan betul kehadiran atau ketiadaan subrentetan dalam rentetan sasaran.

Atas ialah kandungan terperinci Mengapakah `strpos()` Mengembalikan 0, dan Bagaimana Saya Boleh Menyemak Kewujudan Substring dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn