Rumah  >  Soal Jawab  >  teks badan

php keadaan ralat gelung bersyarat

Sila beritahu saya, jika syarat itu benar, mengapa ia tidak menunjukkan "ok"? Saya tidak faham mengapa ia memaparkan "Tidak" jika keadaan dicetuskan.

<?php if (get_number() == "ok") {
    echo "ok";
}
else {
    echo "no";
}
function get_number() {
    $number = rand(1, 10);
    echo $number;
    if ($number == 5) {
        return "ok";
        return false;
    }
    else {
        get_number();
    }
} ?>

P粉536532781P粉536532781431 hari yang lalu521

membalas semua(2)saya akan balas

  • P粉741678385

    P粉7416783852023-09-08 14:19:49

    Blok else 块不会返回任何内容,因此除非您在第一次尝试时得到数字 5,否则它将转到 else anda, yang memanggil dirinya sendiri tetapi sebenarnya tidak mengembalikan sebarang nilai kepada panggilan awal.

    Jika fungsi tidak mengembalikan apa-apa, anda mendapat NULL.

    Juga dalam pernyataan else 块中添加一个 return supaya nilai yang dikembalikan menggelembung sehingga panggilan awal.

    if ($number == 5) {
        return "ok";
    }
    else {
        return get_number();
    }
    

    BTW Saya harap ini bukan kod sebenar tetapi hanya beberapa ujian kerana ia pada asasnya hanyalah gema yang terlalu rumit ok 的方式。它应该永远无法到达 echo 'no';

    balas
    0
  • P粉696605833

    P粉6966058332023-09-08 09:24:01

    Sila tukar syarat else daripada get_number(); 更改为 return get_number(); untuk membuat panggilan rekursif.

    Selain itu, mengapa menggunakan 2 penyata pulangan dalam keadaan if?

    return "ok";
    return false;

    Anda boleh menyimpan yang pertama dan memadamkan penyata pulangan kedua.

    balas
    0
  • Batalbalas