Rumah  >  Soal Jawab  >  teks badan

Skop pembolehubah PHP merentas blok kod

<p>Saya sangat baru dengan PHP dan masih belajar. </p> <p>Saya selalunya perlu mendapatkan semula pembolehubah tertentu dan mengakses sifatnya. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); echo('Nama pengguna: ' . $user_info->user_login . "<br>"); echo('Tahap pengguna: ' . $info_pengguna->tahap_pengguna . "<br>"); echo('ID Pengguna: ' . $user_info->ID . "<br>"); echo('Nama: ' . $user_info->user_firstname . "<br>"); echo('Nama akhir: ' . $user_info->user_lastname . "<br>"); echo('Masa pendaftaran: ' . $user_info->user_registered . "<br>"); ?></pra> <p>Saya lebih suka mengambil<kod>$user_info = get_userdata($id);</ code> </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); ?> <Beberapa HTML> <?php echo $user_info->user_login ?> <Beberapa HTML> <?php echo $user_info->user_login ?></pre> <p>Tetapi saya mengesyaki bahawa <code>$user_info</code> tidak boleh dikongsi antara blok kerana ia bukan global. Apakah pendekatan biasa dalam situasi ini? </p>
P粉771233336P粉771233336394 hari yang lalu555

membalas semua(2)saya akan balas

  • P粉617237727

    P粉6172377272023-08-25 09:32:59

    Anda boleh menggunakannya di dalam blok kod (gelung, pernyataan bersyarat), tetapi tidak di dalam fungsi. Jika anda ingin menggunakannya di dalam fungsi, anda perlu menggunakan kata kunci global:

    $user_info ....... //在外部声明
    
    function foo(){
       global $user_info // 现在也可以在这里使用
    
       // 更多代码
    }

    Anda boleh mengetahui lebih lanjut tentang skop pembolehubah PHP dalam dokumentasi rasmi :)

    balas
    0
  • P粉466909449

    P粉4669094492023-08-25 09:01:17

    Anda meletakkan terlalu banyak makna ke dalam blok kod php.
    Ini bukan perkara global.
    Blok ini tergolong dalam skrip PHP yang sama. Ia hanyalah cara yang bagus untuk mengeluarkan HTML dan tidak mempunyai makna lain. Anda boleh menggantikannya dengan HTML gema tanpa sebarang perbezaan.

    Keseluruhan skrip PHP dilaksanakan sekali gus, bukan secara berulang, seperti yang anda bayangkan, fikirkan blok PHP dilaksanakan pada bahagian pelayan, kemudian blok HTML dilaksanakan pada bahagian klien, kemudian kembali ke bahagian pelayan di mana blok PHP dilaksanakan, dan seterusnya analogi. Ini adalah salah.
    Keseluruhan skrip PHP dilaksanakan pada bahagian pelayan, dan hasilnya dipaparkan sebagai HTML biasa dalam penyemak imbas, dan kemudian tamat.

    Itulah sebabnya anda tidak boleh menulis kedua-dua borang HTML dan pengendalinya dalam skrip PHP yang sama, cuma letakkan yang kedua selepas yang pertama. Anda kena panggil pelayan semula untuk pengendali berfungsi. Ini akan menjadi panggilan yang sama sekali berbeza, satu lagi contoh skrip yang sama, tidak tahu apa-apa tentang panggilan sebelumnya, yang telah lama tamat. Ini juga satu lagi perkara yang anda mesti tahu tentang PHP:

    Pelaksanaan skrip PHP adalah atom. Ia bukan seperti aplikasi desktop yang berjalan secara berterusan dalam penyemak imbas, atau malah daemon yang mengekalkan sambungan berterusan ke aplikasi desktop. Ia lebih seperti utiliti baris arahan - lakukan tugas anda dan keluar. Ia berjalan secara diskret:

    1. Pelayar memulakan panggilan
    2. PHP bangun, mencipta halaman HTML, menghantarnya ke penyemak imbasdan tamat
    3. Pelayar memaparkan HTML dan memaparkannya kepada pengguna.
    4. Pengguna klik pautan
    5. Pelayar memulakan panggilan
    6. Satu lagi contoh PHP, tanpa mengetahui apa-apa tentang panggilan sebelumnya, bangun dan seterusnya

    balas
    0
  • Batalbalas