Output semua pembolehubah dalam php. Cetak semua pembolehubah. Pembolehubah statik: mereka berada di sekitar suatu tempat

Tutorial ini merangkumi skop pembolehubah PHP. Menjelaskan perbezaan antara skop tempatan dan global, menunjukkan cara mengakses pembolehubah global dalam fungsi, cara bekerja dengan superglobal dan mencipta pembolehubah statik.

Apabila anda mula belajar PHP dan mula bekerja dengan fungsi dan objek, skop pembolehubah agak mengelirukan. Nasib baik, peraturan PHP dalam hal ini sangat mudah difahami (berbanding dengan bahasa pengaturcaraan lain).

Apakah skop?

Skop pembolehubah ialah konteks di mana pembolehubah ditakrifkan dan tempat ia boleh diakses. PHP mempunyai dua skop pembolehubah:

  • Global - pembolehubah boleh diakses di mana-mana dalam skrip
  • Setempat - pembolehubah hanya boleh diakses dalam fungsi di mana ia ditakrifkan

Skop pembolehubah, dan terutamanya yang tempatan, sangat memudahkan pengurusan kod. Jika semua pembolehubah adalah global, maka ia boleh diubah di mana-mana dalam skrip. Ini akan membawa kepada huru-hara dan skrip yang besar, kerana selalunya bahagian skrip yang berbeza menggunakan pembolehubah dengan nama yang sama. Dengan mengehadkan skop kepada konteks setempat, anda mentakrifkan sempadan kod yang boleh mengakses pembolehubah, yang menjadikan kod lebih mantap, modular dan lebih mudah untuk nyahpepijat.

Pembolehubah dengan skop global dipanggil global, dan pembolehubah dengan skop tempatan dipanggil tempatan.

Berikut ialah contoh cara pembolehubah global dan tempatan berfungsi.

Hai Harry! Nilai $globalName: "Zoe" $localName nilai: ""

Dalam skrip ini kami mencipta dua pembolehubah:

  • $globalName ialah global pembolehubah
  • $localName ialah tempatan pembolehubah yang dicipta di dalam fungsi sayHello().

Selepas mencipta pembolehubah dan fungsi, skrip memanggil sayHello(), yang mencetak "Hello Harry!" . Skrip kemudian cuba mengeluarkan nilai dua pembolehubah menggunakan fungsi gema. Inilah yang berlaku:

  • Oleh kerana $globalName dicipta di luar fungsi, ia tersedia di mana-mana dalam skrip, jadi "Zoe" adalah output.
  • $localName hanya akan tersedia dalam fungsi sayHello(). Oleh kerana ungkapan gema berada di luar fungsi, PHP tidak menyediakan akses kepada pembolehubah tempatan. Sebaliknya, PHP menjangkakan kod untuk mencipta pembolehubah baharu yang dipanggil $localName , yang akan mempunyai nilai lalai rentetan kosong. itulah sebabnya panggilan kedua untuk gema mengeluarkan nilai "" untuk pembolehubah $localName.
Mengakses pembolehubah global di dalam fungsi

Untuk mengakses pembolehubah global tidak berfungsi Tulis namanya sahaja sudah memadai. Tetapi untuk mengakses pembolehubah global dalam sesuatu fungsi, anda mesti terlebih dahulu mengisytiharkan pembolehubah sebagai global dalam fungsi menggunakan kata kunci global:

Function myFunction() ( global $globalVariable; // Akses pembolehubah global $globalVariable )

Jika anda tidak melakukan ini, PHP menganggap bahawa anda sedang mencipta atau menggunakan pembolehubah tempatan.

Berikut ialah skrip contoh yang menggunakan pembolehubah global di dalam fungsi:

Apabila dilaksanakan, skrip akan mengeluarkan:

Hai Harry! Hello Zoya!

Fungsi sayHello() menggunakan kata kunci global untuk mengisytiharkan pembolehubah $globalName sebagai global. Dia kemudiannya boleh mengakses pembolehubah dan mengeluarkan nilainya ("Zoe").

Apakah superglobal?

PHP mempunyai set khas tatasusunan global yang dipratentukan yang mengandungi pelbagai maklumat. Tatasusunan sedemikian dipanggil superglobals, kerana ia boleh diakses dari mana-mana sahaja dalam skrip, termasuk ruang fungsi dalaman, dan tidak perlu ditakrifkan menggunakan kata kunci global.

Berikut ialah senarai superglobal yang tersedia dalam PHP versi 5.3:

  • $GLOBALS - senarai semua pembolehubah global dalam skrip (tidak termasuk superglobal)
  • $_GET - mengandungi senarai semua medan borang yang diserahkan oleh penyemak imbas menggunakan permintaan GET
  • $_POST - mengandungi senarai semua medan borang yang dihantar oleh penyemak imbas menggunakan permintaan POST
  • $_COOKIE - mengandungi senarai semua kuki yang dihantar oleh penyemak imbas
  • $_REQUEST - mengandungi semua kombinasi kunci/nilai yang terkandung dalam tatasusunan $_GET, $_POST, $_COOKIE
  • $_FILES - mengandungi senarai semua fail yang dimuat turun oleh penyemak imbas
  • $_SESSION - membolehkan anda menyimpan dan menggunakan pembolehubah sesi untuk penyemak imbas semasa
  • $_SERVER - mengandungi maklumat tentang pelayan, seperti nama fail skrip yang sedang dilaksanakan dan alamat IP penyemak imbas.
  • $_ENV - mengandungi senarai pembolehubah persekitaran yang dihantar ke PHP, seperti pembolehubah CGI.
Sebagai contoh, anda boleh menggunakan $_GET untuk mendapatkan nilai pembolehubah yang disertakan dalam rentetan URL permintaan skrip dan memaparkannya pada halaman:

Jika anda menjalankan skrip di atas menggunakan URL http://www.example.com/script.php?yourName=Fred, ia akan mengeluarkan:

Hello Fred!

Amaran!

Dalam skrip sebenar, pemindahan data sedemikian tidak boleh digunakan kerana keselamatan yang lemah. Anda hendaklah sentiasa mengesahkan atau menapis data.

$GLOBALS superglobal sangat mudah digunakan kerana ia membolehkan anda mengatur akses kepada pembolehubah global dalam fungsi tanpa memerlukan kata kunci global. Sebagai contoh:

Pembolehubah statik: mereka berada di sekitar suatu tempat

Apabila anda mencipta pembolehubah tempatan di dalam fungsi, ia hanya wujud semasa fungsi sedang berjalan. Apabila fungsi selesai, pembolehubah tempatan hilang. Apabila fungsi dipanggil semula, pembolehubah tempatan baharu dicipta.

Dalam kebanyakan kes ini berfungsi dengan baik. Oleh itu, fungsinya adalah serba lengkap dan sentiasa berfungsi sama setiap kali ia dipanggil.

Walau bagaimanapun, terdapat situasi yang sesuai untuk mencipta pembolehubah tempatan yang "mengingat" nilainya antara panggilan fungsi. Pembolehubah sedemikian dipanggil statik.

Untuk mencipta pembolehubah statik dalam fungsi, anda mesti menggunakan kata kunci statik sebelum nama pembolehubah dan pastikan anda memberikannya nilai awal. Sebagai contoh:

Fungsi myFunction() ( statik $myVariable = 0; )

Mari kita pertimbangkan situasi apabila ia adalah mudah untuk menggunakan pembolehubah statik. Katakan anda mencipta fungsi yang, apabila dipanggil, mencipta widget dan memaparkan bilangan widget yang telah dibuat. Anda boleh cuba menulis kod seperti ini menggunakan pembolehubah tempatan:

Tetapi, kerana pembolehubah $numWidgets dicipta setiap kali fungsi dipanggil, kita akan mendapat hasil berikut:

Kami mencipta beberapa widget... Kami telah mencipta 1. Kami telah mencipta 1. Kami telah mencipta 1.

Tetapi dengan menggunakan pembolehubah statik, kita boleh menyimpan nilai dari satu panggilan fungsi ke yang lain:

Sekarang skrip akan menghasilkan hasil yang diharapkan:

Kami mencipta beberapa widget... Kami telah mencipta 1. Kami telah mencipta 2. Kami telah mencipta 3.

Walaupun pembolehubah statik mengekalkan nilainya antara panggilan fungsi, ia hanya sah semasa skrip berjalan. Setelah skrip menyelesaikan pelaksanaan, semua pembolehubah statik dimusnahkan, begitu juga pembolehubah tempatan dan global.

Pembolehubah dalam php adalah sejenis bekas maklumat yang boleh mengandungi pelbagai jenis data (teks, nombor, tatasusunan, dan sebagainya). Secara umum, pembolehubah membolehkan anda membuat, menyimpan, menukar dan kemudian mengakses maklumat yang dinyatakan di dalamnya dengan cepat.

Cara mencipta pembolehubah dalam PHP Pada mulanya, pembolehubah mengandungi tanda $ (dolar) - sebutan untuk menggunakan pembolehubah, kemudian huruf abjad Latin (dari a hingga z, kedua-dua kecil dan besar), pada akhirnya ia boleh mengandungi nombor. Anda juga boleh menggunakan garis bawah dalam tajuk (bukan pada penghujung).

Bagaimanakah anda boleh menamakan pembolehubah:

$var
$pembolehubah
$tahun1945
$_pembolehubah
Bagaimana untuk tidak menamakan pembolehubah:

$1 - hanya terdiri daripada nombor
$1var - anda tidak boleh memulakan nama pembolehubah dengan nombor
$/var - daripada aksara tambahan, hanya garis bawah dibenarkan _
$variable - Cyrillic dibenarkan oleh dokumentasi PHP, tetapi tidak disyorkan
$var iable - ruang tidak boleh digunakan

Setiap pembolehubah diberikan nilai. Untuk menetapkan nilai, gunakan tanda = (sama). Semasa pemprosesan skrip, nilai pembolehubah boleh berubah berulang kali bergantung pada pelbagai keadaan.



Mengeluarkan Pembolehubah PHP Secara berasingan, kita harus melihat bagaimana untuk memaparkan pembolehubah menggunakan operator output, kerja yang kita bincangkan dalam pelajaran sebelumnya Mencipta halaman PHP. Operator inferens. . Di bawah saya akan memberikan beberapa contoh ilustrasi dengan ulasan.

// Beginilah cara kita menetapkan nilai pembolehubah
$name1 = "Alexey";
$name2 = "Alexander";

// Pembolehubah keluaran
echo $nama2; // Keluaran: Alexander
echo "nama1 ialah $name1"; // nama1 ialah Alexey

// Apabila menggunakan petikan tunggal, keluarkan
// nama pembolehubah, bukan nilai
echo "nama1 ialah $name1"; // akan mengeluarkan: name1 ialah $name1

// anda hanya boleh memaparkan nilai pembolehubah
echo $name1; // Alexei
echo $nama1,$nama2; // AlexeyAlexander
echo $name1." ".$name2; // Alexey Alexander
echo "$name1, $name2"; // Alexey, Alexander

Gema

Operasi Tugasan dalam PHP
Operator asas nampak macam = . Pada pandangan pertama nampaknya ini adalah pengendali yang sama. Sebenarnya ini tidak benar. Sebenarnya, pengendali tugasan bermaksud bahawa operan kiri mengambil nilai ungkapan kanan (iaitu, ditetapkan oleh nilai yang terhasil). Operator Gabungan- ini adalah pengendali yang membolehkan anda menggunakan nilai pembolehubah sebelumnya untuk operasi berikutnya (tambahkan pada pembolehubah rentetan (dengan teks) atau tambah nilai angka).

$a = ($b = 2) + 4; // keputusan: $a ditetapkan kepada 6, pembolehubah $b diberikan 2.

$a = 2;
$a += 3; // menetapkan $a kepada 5, sama seperti menulis: $a = $a + 3;
$b = "Hello";
$b .= "Keamanan!"; // menetapkan $b pada rentetan "Hello World!", seperti $b = $b . "Di sana!";

Terdapat juga operasi perbandingan dan logik, tetapi kita akan membincangkannya dalam pelajaran berikut. Saya akan cuba untuk tidak menakutkan anda dengan sejumlah besar maklumat dengan segera!)

12 tahun yang lalu

Sedikit gotcha untuk diperhatikan:

Jika anda mematikan RegisterGlobals dan yang berkaitan, kemudian gunakan get_defined_vars(), anda mungkin melihat sesuatu seperti berikut: