Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Fungsi PHP Rekursif Saya Kadang-kadang Kembali 'Tidak Ditetapkan' Daripada Kod Bar Unik?

Mengapa Fungsi PHP Rekursif Saya Kadang-kadang Kembali 'Tidak Ditetapkan' Daripada Kod Bar Unik?

DDD
DDDasal
2024-12-30 20:54:12400semak imbas

Why Does My Recursive PHP Function Sometimes Return

Menggunakan Pulangan dalam Fungsi Rekursif dalam PHP

Dalam PHP, fungsi rekursif boleh menjadi alat yang berkuasa untuk menyelesaikan masalah yang kompleks. Apabila menulis fungsi rekursif, penggunaan penyataan pulangan dengan betul adalah penting untuk memastikan logik yang betul dan mengelakkan gelung tak terhingga.

Satu kes di mana penggunaan sedemikian lazimnya diabaikan ialah apabila menjana nilai unik, seperti yang ditunjukkan dalam senario berikut:

Soalan:

Matlamatnya ialah untuk menjana kod bar rawak yang belum ada dalam lajur pangkalan data. Fungsi ini menggunakan rekursi untuk menjana nombor berulang kali sehingga nombor unik ditemui. Walau bagaimanapun, fungsi ini kadangkala mengembalikan "Tidak Ditetapkan" dan bukannya menghasilkan nombor unik.

Kod:

function generate_barcode() {
  $barcode = rand(1, 10);
  $bquery = mysql_num_rows(mysql_query("SELECT * FROM stock_item WHERE barcode='$barcode'"));
  if ($bquery == 1) {
    generate_barcode();
  } else {
    return $barcode;
  }
}

Jawapan:

Isu dalam kod yang disediakan terletak pada panggilan rekursif. Untuk memastikan fungsi mengembalikan nombor unik dengan betul, nombor yang baru dijana perlu dikembalikan daripada panggilan rekursif itu sendiri:

function generate_barcode() {
  $barcode = rand(1, 10);
  $bquery = mysql_num_rows(mysql_query("SELECT * FROM stock_item WHERE barcode='$barcode'"));
  if ($bquery == 1) {
    return generate_barcode(); // updated
  } else {
    return $barcode;
  }
}

Dengan mengembalikan nombor yang dijana daripada panggilan rekursif, fungsi memastikan bahawa pemanggil menerima nombor unik.

Pertimbangan Tambahan:

Ia adalah penting untuk memasukkan syarat keluar untuk kes di mana semua nombor diambil. Jika tiada syarat sedemikian, fungsi akan memanggil dirinya secara rekursif sehingga had rekursi PHP dicapai, menyebabkan ralat.

Atas ialah kandungan terperinci Mengapa Fungsi PHP Rekursif Saya Kadang-kadang Kembali 'Tidak Ditetapkan' Daripada Kod Bar Unik?. 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