Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian kepada Amaran PHP: Argumen tidak sah dibekalkan untuk strpos()

Penyelesaian kepada Amaran PHP: Argumen tidak sah dibekalkan untuk strpos()

WBOY
WBOYasal
2023-06-22 16:41:091499semak imbas

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.

  1. Apakah fungsi strpos()?

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.

  1. Punca masalah

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:

  • Parameter pertama mestilah rentetan. Ralat ini akan berlaku jika nilai jenis lain diluluskan.
  • Parameter kedua mestilah juga rentetan. Ralat ini juga akan dicetuskan jika bukan rentetan seperti tatasusunan atau objek diluluskan.
  • Jika parameter pertama ialah rentetan kosong, ralat ini akan dilaporkan tidak kira bagaimana parameter kedua dihantar. Oleh kerana rentetan kosong tidak mempunyai sebarang subrentetan, adalah mustahil untuk mencari subrentetan di dalamnya.
  1. Penyelesaian

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:

rreee

Dalam 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!

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