Apabila kami membangunkan menggunakan PHP, kami sering menemui mesej ralat PHP Amaran: Argumen tidak sah dibekalkan untuk strpos(). Maksud ralat ini ialah parameter yang dihantar ke fungsi strpos() adalah tidak sah, menyebabkan fungsi gagal untuk dilaksanakan secara normal. Dalam artikel ini, kita akan membincangkan punca masalah ini dan bagaimana untuk menyelesaikannya.
Sebelum kita mula membincangkan penyelesaian kepada ralat, mari kita fahami fungsi strpos() dahulu. Fungsi strpos() digunakan untuk mencari kejadian pertama rentetan lain dalam rentetan dan mengembalikan nilai indeks yang sepadan. Sintaksnya adalah seperti berikut:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
Parameter pertama fungsi ini ialah rentetan utama yang ditemui, parameter kedua ialah subrentetan yang ditemui dalam rentetan utama, dan parameter ketiga ialah Pilihan Pilihan, digunakan untuk menentukan kedudukan permulaan carian.
Apabila kita memanggil fungsi strpos(), kita mesti lulus parameter yang betul, jika tidak, argumen Tidak sah yang dibekalkan untuk ralat strpos() akan berlaku . Ralat ini biasanya disebabkan oleh sebab berikut:
Seterusnya, kita akan membincangkan cara menyelesaikan Argumen tidak sah yang dibekalkan untuk ralat strpos().
3.1 Semak jenis parameter yang diluluskan
Mula-mula, kita perlu menyemak sama ada jenis parameter yang kita hantar ke fungsi strpos() adalah betul. Untuk melakukan ini, kita boleh menggunakan fungsi terbina dalam PHP gettype() untuk mendapatkan jenis parameter dan pastikan ia adalah rentetan. Sebagai contoh, kod berikut akan menyemak sama ada pembolehubah $haystack ialah rentetan:
if (gettype($haystack) !== 'string') { // 如果 $haystack 不是字符串,那么输出错误 echo "第一个参数必须是一个字符串"; }
Begitu juga, kita juga boleh menyemak sama ada argumen kedua ialah rentetan.
if (gettype($needle) !== 'string') { // 如果 $needle 不是字符串,那么输出错误 echo "第二个参数必须是一个字符串"; }
3.2 Semak sama ada parameter pertama ialah rentetan kosong
Kedua, kita juga perlu memastikan bahawa parameter pertama yang kita hantar ke fungsi strpos() bukan rentetan kosong. Untuk ini kita boleh menggunakan fungsi PHP terbina dalam empty() untuk menyemak sama ada rentetan itu kosong. Sebagai contoh, kod berikut akan menyemak sama ada pembolehubah $haystack kosong:
if (empty($haystack)) { // 如果 $haystack 是空字符串,那么输出错误 echo "第一个参数不可为空"; }
Jika parameter pertama yang kita hantar ke fungsi itu sememangnya rentetan kosong, maka tidak perlu menyemak parameter kedua , kerana tiada cara untuk mencari subrentetan dalam rentetan kosong pula.
3.3 Menggunakan nilai pulangan strpos()
Akhir sekali, kita juga boleh menentukan sama ada panggilan fungsi kita berjaya dengan menyemak nilai pulangan fungsi strpos(). Apabila fungsi strpos() menjumpai subrentetan yang ditentukan, ia mengembalikan indeks subrentetan dalam rentetan utama (mengira dari 0), jika tidak, fungsi mengembalikan palsu. Oleh itu, kita boleh menggunakan operator perbandingan ketat PHP (===) untuk menyemak sama ada nilai pulangan fungsi strpos() ialah boolean false. Sebagai contoh, kod berikut akan menyemak sama ada fungsi strpos() dilaksanakan dengan jayanya:
rreeeDalam pembangunan sebenar, kita boleh memilih satu atau beberapa penyelesaian ini mengikut situasi tertentu.
Ringkasan
Dalam artikel ini, kami membincangkan Amaran PHP: Argumen tidak sah yang dibekalkan untuk mesej ralat strpos() dan menyediakan pelbagai penyelesaian. Jika anda menghadapi ralat ini semasa menggunakan fungsi strpos(), maka anda boleh mengikuti kaedah yang diterangkan dalam artikel ini untuk menyelesaikan masalah tersebut. Setiap kali kami menghadapi ralat PHP, kami harus menyemak kod dengan teliti dan mengikuti beberapa peraturan pengaturcaraan asas untuk memastikan ketepatan dan keteguhan kod.
Atas ialah kandungan terperinci Penyelesaian kepada Amaran PHP: Argumen tidak sah dibekalkan untuk strpos(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!