Menggunakan Penyata Pulangan dalam Fungsi Rekursif PHP
Dalam PHP, fungsi rekursif menyediakan mekanisme yang berkuasa untuk pengiraan berulang. Walau bagaimanapun, apabila berurusan dengan fungsi rekursif, penggunaan pernyataan pulangan memerlukan pertimbangan yang teliti. Artikel ini menangani isu biasa yang dihadapi semasa cuba menjana nombor unik menggunakan pendekatan rekursif.
Pernyataan Masalah
Seorang pembangun menghadapi senario di mana kod bar rawak unik perlu dijana. Jika kod bar yang dijana sudah wujud dalam pangkalan data, nombor rawak baharu dijana. Proses ini berterusan sehingga kod bar unik ditemui. Pembangun menggunakan fungsi rekursif untuk tujuan ini, tetapi kadangkala fungsi itu gagal menjana nombor unik dan mengembalikan "Tidak Ditetapkan."
Coretan 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; } }
Analisis
Coretan kod yang disediakan berfungsi dengan betul jika terdapat nombor selain daripada 1 hingga 4 dalam pangkalan data. Walau bagaimanapun, jika semua nombor dari 1 hingga 4 diduduki, fungsi itu akan berulang tanpa henti kerana tiada nombor unik boleh dijana. Untuk menyelesaikan isu ini, fungsi perlu mengembalikan nombor yang dijana pada setiap langkah rekursif.
Coretan Kod Dibetulkan
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(); // Return generated number } else { return $barcode; } }
Dengan mengembalikan nombor yang dijana pada setiap rekursif langkah, fungsi tersebut terus menjana nombor baharu sehingga nombor unik ditemui, memastikan kefungsian yang diingini.
Atas ialah kandungan terperinci Mengapa Fungsi PHP Rekursif Memerlukan Pengendalian Penyata Pemulangan Berhati-hati?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!