Variabel dalam kurung kurawal php. Operator PHP. Mengubah string menjadi angka




Halo programmer pemula yang terhormat. Mari kita terus mempelajari unsur-unsur penyusunnya.

Pada artikel ini kita akan mempelajari apa itu operator php. Beberapa di antaranya sebenarnya sudah kita kenal hampir sejak kecil, namun kita hanya mengenalnya sebagai tanda (+, -, =, !, ?).

Di php, semuanya disebut operator, yang cukup logis, karena mereka melakukan tindakan atau operasi tertentu.

Bahkan bisa dibilang semua karakter yang dapat dicetak selain huruf atau angka adalah operator di PHP. Namun bukan itu saja, karena ada operator yang terdiri dari huruf.

Mari kita mulai secara berurutan.

Operator aritmatika

Operator aritmatika digunakan untuk melakukan operasi pada bilangan.

+ adalah operator penjumlahan;
— — operator pengurangan;
/ adalah operator pembagian;
* — operator perkalian;
% adalah operator untuk memperoleh sisa pembagian;
++ — operator kenaikan satu (kenaikan);
— — — berkurang satu operator (penurunan)

Saat menulis, biasanya diberi spasi sebelum dan sesudah operator. Hal ini dilakukan semata-mata untuk kemudahan membaca kode, meskipun ruang ini tidak mempengaruhi apa pun, dan Anda dapat melakukannya tanpanya jika diinginkan.

Ekspresi kompleks disusun menurut aturan yang berlaku dalam aritmatika, yaitu perkalian dan pembagian lebih diprioritaskan daripada penjumlahan dan pengurangan, dan jika keduanya ada dalam ekspresi, maka yang terakhir diapit tanda kurung.

gema (6 + 7 ) * (7 + 8 ); // 195
?>

Saat melakukan tindakan membagi bilangan bulat dengan bilangan bulat, jika diperoleh sisa, hasilnya secara otomatis diubah menjadi bilangan real (bilangan floating point).

gema 8/3; //2.66666666666
?>

Jumlah digit yang dicetak untuk bilangan pecahan bergantung pada nilai yang ditetapkan dalam arahan presisi yang terdapat di file php.ini. Biasanya 12 karakter tidak termasuk titik.

Operator % biasa digunakan untuk menentukan apakah suatu bilangan habis dibagi bilangan lain tanpa sisa atau tidak.

gema 53328 % 4 ; //0
?>

Operasi dengan operator aritmatika, kecuali kenaikan dan penurunan, disebut biner, karena melibatkan dua operan (istilah + istilah, dividen / pembagi, dll.)

Tindakan kenaikan dan penurunan disebut unary, karena melibatkan satu operan. Apakah masih ada lagi operasi bersyarat, yang melibatkan tiga operan.

Operator kenaikan (++) dan penurunan (- -) hanya berlaku untuk variabel.

Tipe variabel integer (bilangan bulat)

$berikutnya = 3 ;
gema+$berikutnya; // 4
?>

String tipe variabel

$berikutnya = "abc";
gema $berikutnya; // abd
?>

Huruf "d" yang dicetak bukan huruf "c" karena merupakan huruf berikutnya dalam alfabet dan kami menambah nilai variabel sebanyak satu.

Contoh menunjukkan tindakan dengan kenaikan, dan dengan cara yang sama Anda dapat melakukan tindakan dengan penurunan.

Operator bitwise

Operator bitwise dirancang untuk bekerja dengan data biner. Jika ada yang tidak tahu apa itu, saya akan menjelaskannya. Bilangan biner adalah bilangan seperti 1001000011100000111000.

Karena data tersebut hampir tidak pernah digunakan dalam pengembangan situs web, kami tidak akan membahasnya secara detail. Saya hanya akan menunjukkan kepada Anda seperti apa bentuknya, sehingga ketika Anda menemukan simbol-simbol seperti itu, Anda dapat membayangkan apa yang sedang Anda hadapi.

& - koneksi bitwise DAN (dan);
~ — negasi bitwise (bukan);
| — kesatuan bitwise OR (atau);
^ — sedikit demi sedikit ATAU (xor);
<< — сдвиг влево битового значения операнда;
>> — menggeser ke kanan nilai bit operan;

Kemungkinan besar Anda akan menjumpai operator-operator ini, karena data biner banyak digunakan dalam pengembangan program grafik komputer. Tetapi untuk mempelajarinya, jika seseorang membutuhkannya, mereka harus mengambil kursus terpisah di sumber lain.

Operator Perbandingan

Operator perbandingan adalah operator logika dan digunakan untuk membandingkan variabel. Array dan objek tidak dapat dibandingkan menggunakan keduanya.

> - operator lebih besar dari;
=> - operator lebih besar dari atau sama;
< — оператор меньше;
<= — оператор меньше или равно;
== — operator kesetaraan;
!= — operator pertidaksamaan;
=== — operator ekivalensi (nilai dan jenis variabelnya sama);
!== — operator non-ekivalensi;

Sebagai hasil perbandingan, layar menampilkan salah satu yang menunjukkan benar (benar), atau string kosong yang menunjukkan salah (salah).

gema 1 > 0; // 1
gema 1< 0 ; // пустая строка
gema 1 => 0 ; // 1
gema 1 == 1 ; // 1
?>

Jadi, operator pembanding hampir tidak pernah digunakan. Tujuan utamanya adalah untuk bekerja bersama dengan pernyataan if.

Pernyataan kondisional if, else, elseif.

Operator bersyarat disebut demikian karena dirancang untuk menguji kondisi tertentu, bergantung pada tindakan tertentu yang dilakukan.

Pernyataan if menggunakan variabel atau ekspresi boolean sebagai argumen. Jika kondisi benar maka akan ditampilkan hasilnya, jika tidak benar maka akan ditampilkan baris kosong.



jika ($selanjutnya< $nexT)
{
echo "Peluang terjadinya presipitasi"; // Keluaran Curah Hujan mungkin
}
?>

$next = "Kelembaban udara 80%";
$nexT = "Kelembaban udara 90%";
jika ($berikutnya > $berikutnya)
{
echo "Peluang terjadinya presipitasi"; // Cetak baris kosong
}
?>

Jika program perlu menentukan dua tindakan, salah satunya akan dilakukan jika nilainya benar, dan yang lainnya jika nilainya salah, maka pernyataan else digunakan bersama dengan pernyataan if.

$next = "Kelembaban udara 80%";
$nexT = "Kelembaban udara 90%";
jika ($berikutnya > $berikutnya)
{
echo "Peluang terjadinya presipitasi";
}
kalau tidak
{
echo "Diperkirakan tidak ada curah hujan";
}
?>

Dalam hal ini, “Curah hujan tidak diharapkan” akan ditampilkan, dan jika dalam ekspresi Anda mengubah tanda “Lebih Banyak” menjadi “Lebih Sedikit”, maka “Curah hujan mungkin terjadi” akan ditampilkan. Beginilah cara operator kondisional memeriksa suatu kondisi dan mengeluarkan hasil yang benar berdasarkan kondisi tersebut.

Seringkali ada kebutuhan untuk menetapkan lebih dari dua kondisi, dan kemudian, untuk memeriksanya secara berurutan, operator elseif digunakan.



jika ($berikutnya > $berikutnya)
{
gema "Saya mengerti";
}
elseif ($berikutnya<= $nexT)
{
gema "Salju";
}
elseif ($berikutnya >= $berikutnya)
{
gema "Hujan";
}
elseif ($berikutnya == $berikutnya)
{
gema "Kekeringan";
}
kalau tidak
{
echo "Peluang terjadinya presipitasi";
}
?>

Program ini akan menampilkan "Salju". Jika tidak ada kondisi yang cocok, maka akan muncul “Peluang Curah Hujan”.

Pernyataan if dapat berisi blok elseif sebanyak yang Anda inginkan, namun hanya satu pernyataan else.

Opsi perekaman alternatif diperbolehkan - tanpa kurung kurawal. Dalam hal ini, baris pernyataan if, else, elseif diakhiri dengan titik dua, dan seluruh konstruksi diakhiri dengan kata kunci (operator) endif.

$next = "Kelembaban udara 50%";
$nexT = "Kelembaban udara 60%";
jika ($selanjutnya<= $nexT):

gema "Salju";

elseif ($berikutnya >= $berikutnya):

gema "Hujan";

elseif ($berikutnya == $berikutnya):

gema "Kekeringan";

kalau tidak:

echo "Peluang terjadinya presipitasi";
berakhir jika ;
?>

Operator logika

Operator logika mirip dengan operator bitwise. Perbedaan di antara keduanya adalah yang pertama beroperasi dengan variabel logis, dan yang terakhir dengan angka.

Operator logika digunakan ketika Anda perlu menggabungkan beberapa kondisi, yang akan mengurangi jumlah pernyataan if, yang pada gilirannya mengurangi kemungkinan kesalahan dalam kode.

&& - konjungsi penghubung DAN;
dan - juga DAN, tetapi dengan prioritas lebih rendah;
|| - memisahkan konjungsi OR;
atau - juga ATAU, tetapi dengan prioritas lebih rendah;
xor - eksklusif ATAU;
! - penyangkalan;

Prioritas lebih rendah berarti jika kedua operator ada, operator dengan prioritas lebih tinggi akan dieksekusi terlebih dahulu.

Di masa depan, dengan menggunakan contoh skrip yang lebih kompleks, kita akan membahas operator logika secara lebih rinci.

Operator penugasan

Operator penugasan = menugaskan nilai operan kanan ke operan kiri.

$berikutnya = "Halo"
gema "Halo" // Halo
?>

Titik operator

Operator titik memisahkan bagian bilangan bulat suatu bilangan dari bagian pecahannya, dan menggabungkan beberapa string dan suatu bilangan menjadi satu string utuh.

$berikutnya = 22 ;
echo "Hari ini setelah" .$next. "diperkirakan akan terjadi embun beku"; // Hari ini diperkirakan akan membeku setelah pukul 22
?>

Operator tanda kurung

Seperti dalam matematika, operator tanda kurung memberikan prioritas pada tindakan yang ada di dalamnya.

Data yang diapit tanda kurung dieksekusi terlebih dahulu, lalu sisanya.

Operator kurung kurawal

Ada tiga cara, atau bahkan gaya, untuk menempatkan kurung kurawal di PHP.

1. Gaya BSD - tanda kurung disejajarkan ke kiri.

jika ($berikutnya)
{

}

2. Gaya GNU - tanda kurung disejajarkan menjorok dari tepi kiri

jika ($berikutnya)
{
echo “Halo para programmer pemula yang terhormat”;
}

3. Gaya K&R - tanda kurung terbuka di baris operator

jika ($berikutnya)(
echo “Halo para programmer pemula yang terhormat”;
}

Sejak awal, Anda harus memilih salah satu gaya dan di masa depan, saat menulis skrip, gunakan saja. Selain itu, tidak masalah gaya mana yang Anda sukai. Penting agar seragam di seluruh program.

Saya pikir itu sudah cukup untuk saat ini. Pada prinsipnya tidak hanya tanda, tetapi juga fungsi dan elemen lainnya dapat menjadi operator, sehingga sangat sulit untuk mencantumkan semuanya, dan tidak ada gunanya.

Cukup memiliki gambaran tentang dasar-dasarnya. Dan kami akan menganalisis sisanya menggunakan contoh-contoh praktis.

Seorang warga Irlandia berkeliaran di sekitar Bandara Sheremetyevo sambil menangis. Salah satu karyawan memutuskan untuk bersimpati:
— Apakah kamu merindukan tanah airmu?
- Sama sekali tidak. Saya baru saja kehilangan semua barang bawaan saya
- Bagaimana ini bisa terjadi?
- Saya sendiri tidak mengerti. Sepertinya saya memasang steker dengan benar

variabel $GLOBALS. Array asosiatif yang berisi referensi ke semua variabel cakupan skrip global yang saat ini ditentukan. Nama variabel adalah kunci array.

Untuk mendeklarasikan variabel global, cukup letakkan di array $GLOBALS

$GLOBALS["testkey2"]="nilaiuji2";

Anda dapat menampilkan semua nilai variabel array $GLOBALS menggunakan print_r($GLOBALS); atau seperti ini:

Foreach ($GLOBALS sebagai $key=>$value) echo "GLOBALS[".$key."] == ".$value."
";

variabel $_SERVER.

    variabel $_REQUEST- array asosiatif (array), yang secara default berisi data variabel $_GET, $_POST dan $_COOKIE. Variabel dalam array $_REQUEST diteruskan ke skrip menggunakan metode GET, POST atau COOKIE, sehingga tidak dapat dipercaya karena mereka bisa saja diubah oleh pengguna jarak jauh. Kehadirannya dan urutan penambahan data ke array terkait ditentukan oleh direktif variabel_urutan (GPCS diatur secara default).

    variabel $_SESSION

    variabel $_ENV. Diisi jika skrip diluncurkan dari baris perintah. Array $_SERVER akan berisi semua variabel dari array $_ENV.

    variabel $http_response_header

Pada postingan terakhir kita melihat sintaks pernyataan kondisional di PHP. Dalam catatan ini kita akan membahas tentang tanda kurung operator. Anda akan menjumpai mereka terus-menerus. Ini adalah konsep dasar dari bahasa pemrograman apa pun.

Wikipedia akan membantu kita menjawab pertanyaan tentang apa itu tanda kurung operator:

Tanda kurung operator- tanda kurung atau perintah yang mendefinisikan blok perintah dalam bahasa pemrograman, dianggap sebagai satu kesatuan, sebagai satu perintah.

Pascal menggunakan konstruksi berikut untuk menunjukkan tanda kurung operator: mulai…. akhir. Dalam bahasa mirip C (yang mencakup PHP), tanda kurung operator dijelaskan menggunakan simbol {…} .

Itu. dengan kata lain, beberapa perintah yang diapit tanda kurung operator diperlakukan sebagai 1 perintah.

Ada contoh di artikel tentang kondisi di PHP:

$b) ( echo "Variabel A lebih besar dari B"; ) else ( echo "Variabel B lebih besar dari A"; ) ?>

Dalam contoh ini, tanda kurung operator digunakan sebanyak 2 kali. Mereka menjebak operator

  • gema“Variabel A lebih besar dari B”;
  • gema“Variabel B lebih besar dari A”;

Pada contoh ini hanya ada 1 pernyataan yang diapit tanda kurung, sehingga setara dengan penulisan seperti ini:

$b) echo "Variabel A lebih besar dari B"; else echo "Variabel B lebih besar dari A"; ?>

Sintaksis:

Jika (kondisi) ekspresi 1; ekspresi lain 2;

Katakanlah kita ingin baris lain ditampilkan di layar jika suatu kondisi tidak terpenuhi. Mari kita ubah juga nilai variabel kita menjadi sekarang $a adalah > $b. Mari kita ubah kode kita:

$b) echo "Variabel A lebih besar dari B."; else echo "Variabel B lebih besar dari A."; echo "Ya..ya A sebenarnya lebih kecil dari B."; ?>

Ayo lakukan... Apa yang kita lihat di layar:

Variabel A lebih besar dari B. Ya..ya A sebenarnya lebih kecil dari B.

Ada kesalahan di sini. Seperti yang sudah Anda duga, intinya adalah karena kondisi kita benar (a > b), kode akan dieksekusi:

Echo “Variabel A lebih besar dari B.”;

Di utas kalau tidak Kami hanya memiliki 1 ekspresi:

Echo “Variabel B lebih besar dari A.”;

Ekspresi berikut akan dieksekusi apa pun kondisinya. Seperti ini:

$b) echo "Variabel A lebih besar dari B."; else echo "Variabel B lebih besar dari A."; echo "Ya..ya A sebenarnya lebih kecil dari B."; ?>

Sekarang kita menggunakan tanda kurung operator dan menggabungkan 2 ekspresi di cabang kalau tidak:

$b) ( echo "Variabel A lebih besar dari B."; ) else ( echo "Variabel B lebih besar dari A."; echo "Ya..ya A sebenarnya lebih kecil dari B."; ) ?>

Kodenya menjadi lebih jelas. Sekarang PHP memahami bahwa jika kondisi ($a > $b) tidak terpenuhi, maka perlu mencetak 2 baris. Dan jika kondisinya benar - hanya satu.

Yang besar dariku untukmu nasihat– selalu gunakan tanda kurung operator, meskipun Anda tidak perlu menggabungkan beberapa operator menjadi 1 blok. Faktanya adalah:

  • Kode lebih mudah dibaca dengan cara ini. Melihat sekilas kodenya, kita melihat blok-blok individualnya, dan bukan kumpulan huruf dan angka.
  • Perubahan sering kali harus dilakukan pada kode lama. Jika Anda tidak memiliki tanda kurung operator, dan Anda (seperti dalam kasus kami) menambahkan beberapa kode, logika program akan salah. Anda mungkin tidak langsung menyadarinya.

Untuk interpolasi string. Dari manual:

Sintaks yang kompleks (keriting).

Ini tidak disebut kompleks karena sintaksnya rumit sehingga memungkinkan ekspresi yang kompleks.

Variabel skalar, elemen array, atau properti objek apa pun dengan representasi string dapat dimasukkan melalui sintaksis ini. Tulis saja ekspresi seperti yang Anda lakukan di luar string, lalu bungkus dalam ( dan ) . Karena ( tidak dapat di-escape, sintaks ini hanya akan dikenali ketika $ mengikuti ( . gunakan (\$ untuk mendapatkan literal ($ . Beberapa contoh untuk memperjelas:

lebar) lebar 00 sentimeter."; // Berfungsi, kunci yang dikutip hanya berfungsi menggunakan sintaks kurung kurawal echo "Ini berfungsi: ($arr["key"])"; // Berfungsi echo "Ini berfungsi: ($arr)" ; // Ini salah karena alasan yang sama seperti $foo salah di luar string. // Dengan kata lain, ini akan tetap berfungsi, tetapi hanya karena PHP pertama kali mencari // konstanta bernama foo; / dilemparkan.echo "Ini salah: ($arr)"; arr["foo"])"; // Berhasil. echo "Ini berhasil: " .$arr["foo"]; echo "Ini juga berhasil: ( $obj->values->name)"; echo "Ini adalah nilai dari var bernama $name: ($($name))"; echo "Ini adalah nilai dari var yang dinamai dengan nilai kembalian getName( ): ($(getName()))"; echo "Ini adalah nilai var yang diberi nama dengan nilai kembalian \$object->getName(): ($($object->getName()))"; // Tidak akan berfungsi, output: Ini adalah nilai kembalian getName(): (getName()) echo "Ini adalah nilai kembalian getName(): (getName())"; ?>

Seringkali sintaksis ini tidak diperlukan. Misalnya ini:

$a = "abcd"; $keluar = "$a $a"; // "abcd abcd";

berperilaku persis seperti ini:

$keluar = "($a) ($a)"; // sama

Oleh karena itu, kurung kurawal tidak diperlukan. Tapi ini:

$keluar = "$aefgh";

akan, tergantung pada tingkat kesalahan Anda, tidak berfungsi atau membuat kesalahan karena tidak ada variabel bernama $aefgh , jadi Anda perlu melakukan:

$keluar = "$(a)efgh"; // atau $keluar = "($a)efgh";

Komentar: Di PHP 7.0.0 pada platform 64-bit tidak ada batasan panjang baris yang dapat dicapai; pada sistem 32-bit dan di versi PHP sebelumnya, ukuran baris tidak boleh lebih besar dari 2 GB (2147483647 byte).

Sintaksis

Sebuah string dapat didefinisikan dalam empat cara berbeda:

  • kutipan tunggal
  • tanda kutip ganda
  • sintaks nowdoc (sejak PHP 5.3.0)

Kutipan tunggal

Cara paling sederhana untuk mendefinisikan sebuah string adalah dengan mengapitnya dalam tanda kutip tunggal (simbolnya " ).

Untuk menggunakan tanda kutip tunggal di dalam string, hilangkan tanda kutip tersebut dengan garis miring terbalik ( \ ). Jika Anda perlu menulis garis miring terbalik itu sendiri, duplikatlah ( \\ ). Semua penggunaan garis miring terbalik lainnya akan ditafsirkan sebagai karakter normal: ini berarti jika Anda mencoba menggunakan urutan escape lain seperti \R atau \N, mereka akan ditampilkan apa adanya, bukan dengan perilaku khusus apa pun.

gema "ini adalah string sederhana";

gema "Anda juga bisa menyisipkannya ke dalam garis
karakter baris baru seperti ini,
Ini baik-baik saja"
;

// Keluaran: Arnold pernah berkata: "Saya akan kembali"
gema "Suatu hari Arnold berkata, 'Saya akan kembali.'';

Gema "Apakah Anda menghapus C:\\*.*?";

// Keluaran: Apakah Anda menghapus C:\*.*?
echo "Apakah Anda menghapus C:\*.*?" ;

// Keluaran: Ini tidak akan diperluas: \n baris baru
gema "Ini tidak akan diperluas: \n baris baru";

// Output: variabel $expand dan $either tidak diperluas
gema "$expand dan $either variabel tidak diperluas";
?>

Kutipan ganda

Jika string diapit tanda kutip ganda ("), PHP mengenali urutan escape karakter khusus berikut:

Urutan Pelarian
Selanjutnya Arti
\N baris baru (LF atau 0x0A (10) di ASCII)
\R pengangkutan kembali (CR atau 0x0D (13) di ASCII)
\T tab horizontal (HT atau 0x09 (9) di ASCII)
\v tab vertikal (VT atau 0x0B (11) di ASCII) (sejak PHP 5.2.5)
\e karakter escape (ESC atau 0x1B (27) di ASCII) (sejak PHP 5.4.4)
\F umpan halaman (FF atau 0x0C(12) di ASCII) (sejak PHP 5.2.5)
\\ garis miring terbalik
\$ tanda dollar
\" kutipan ganda
\{1,3} rangkaian karakter yang cocok dengan ekspresi reguler karakter oktal yang meluap secara diam-diam agar sesuai dengan satu byte (yaitu "\400" === "\000")
\x(1,2) urutan karakter yang sesuai dengan ekspresi reguler karakter dalam notasi heksadesimal
\u(+) urutan karakter yang cocok dengan ekspresi reguler karakter Unicode yang dipetakan ke string dalam representasi UTF-8 (ditambahkan di PHP 7.0.0)

Seperti halnya string yang diapit tanda kutip tunggal, pelolosan karakter apa pun juga akan menampilkan karakter pelolosan itu sendiri. Sebelum PHP 5.1.1, garis miring terbalik masuk \($var) tidak dipublikasikan.

Ini dok

Cara ketiga untuk mendefinisikan string adalah dengan menggunakan sintaks heredoc: <<< . Setelah operator ini, Anda harus menentukan pengidentifikasi, lalu umpan baris. Setelah ini muncul baris itu sendiri, dan kemudian pengenal yang sama, menutup penyisipan.

Garis harus mulai dengan pengidentifikasi penutup, mis. itu harus muncul di kolom pertama baris. Selain itu, pengidentifikasi harus mengikuti aturan penamaan yang sama seperti semua tag lainnya di PHP: hanya berisi karakter alfanumerik dan garis bawah, dan tidak boleh dimulai dengan angka (garis bawah diperbolehkan).

Perhatian

Sangat penting untuk dicatat bahwa baris pengidentifikasi penutup tidak boleh berisi karakter lain kecuali titik koma ( ; ). Artinya id tidak boleh diindentasi dan tidak boleh ada spasi atau tab sebelum atau sesudah titik koma. Penting juga untuk dipahami bahwa karakter pertama sebelum pengidentifikasi penutup harus berupa karakter baris baru seperti yang ditentukan oleh sistem operasi Anda. Misalnya, pada sistem UNIX, termasuk macOS, hal ini terjadi \N. Baris baru juga harus dimulai segera setelah pengidentifikasi penutup.

Jika aturan ini dilanggar dan pengidentifikasi penutup tidak "bersih", maka pengidentifikasi penutup dianggap hilang dan PHP akan terus mencarinya lebih lanjut. Jika dalam hal ini pengidentifikasi penutup yang benar tidak pernah ditemukan, maka akan menyebabkan kesalahan penguraian dengan nomor baris di akhir skrip.

Contoh #1 Contoh sintaksis yang salah

kelas foo (
publik $bar =<<batang
EOT;
// lekukan sebelum pengidentifikasi penutup tidak diperbolehkan
}
?>

Contoh #2 Contoh sintaksis yang benar

kelas foo (
publik $bar =<<batang
EOT;
}
?>

Heredoc tidak dapat digunakan untuk menginisialisasi bidang kelas. Mulai dari PHP 5.3, pembatasan ini hanya berlaku untuk dokumen heredoc yang berisi variabel.

Teks Heredoc berperilaku sama seperti string dalam tanda kutip ganda, tanpa memilikinya. Artinya, Anda tidak perlu melakukan escape pada tanda kutip di heredoc, namun Anda tetap dapat menggunakan rangkaian escape di atas. Variabel diproses, namun Anda harus berhati-hati saat menggunakan variabel kompleks di dalam heredoc seperti saat bekerja dengan string.

Contoh #3 Contoh definisi string di sini

$str =<<Contoh baris,
mencakup beberapa baris,
menggunakan sintaks heredoc.
EOD;

Kelas foo
{
var $foo;
var $bar ;

Fungsi__konstruksi()
{
$ini -> foo = "Foo" ;
$ini ->
}
}

$foo = foo baru();
$nama = "Nama" ;

gema<<Nama saya adalah "$nama". Saya mengetik $foo -> foo .
Sekarang saya menyimpulkan
( $foo -> bilah [ 1 ]) .
Ini akan menghasilkan huruf kapital "A": \x41
EOT;
?>

Nama saya adalah "Nama". Saya mengetik Foo. Sekarang, saya mengeluarkan Bar2. Ini akan menghasilkan huruf kapital "A": A

Sintaks heredoc juga dapat digunakan untuk meneruskan data melalui argumen fungsi:

Sejak versi 5.3.0, inisialisasi variabel statis dan properti/konstanta kelas dapat dilakukan menggunakan sintaks heredoc:

Contoh #5 Menggunakan heredoc untuk menginisialisasi variabel statis

// Variabel statis
fungsi foo()
{
statis $bar =<<Tidak ada apa-apa di sini...
LABEL;
}

// Konstanta/properti kelas
kelas foo
{
konstanta BAR =<<Contoh penggunaan konstanta
FOOBAR;

Publik $baz =<<Contoh penggunaan lapangan
FOOBAR;
}
?>

Pada PHP 5.3.0, Anda juga dapat mengapit pengidentifikasi Heredoc dengan tanda kutip ganda:

Sekarang dok

Nowdoc sama untuk string dengan tanda kutip tunggal seperti halnya heredoc untuk string dengan tanda kutip ganda. Nowdoc mirip dengan heredoc, tetapi di dalamnya tidak ada pergantian pemain yang dilakukan. Desain ini ideal untuk menyematkan kode PHP atau blok teks besar lainnya tanpa harus keluar darinya. Dalam hal ini sedikit mirip dengan konstruksi SGML dengan mendeklarasikan blok teks yang tidak dimaksudkan untuk diproses.

Nowdoc ditunjukkan dengan urutan yang sama <<< , yang digunakan di heredoc, tetapi pengenal berikut diapit tanda kutip tunggal, misalnya, <<<"EOT" . Semua ketentuan yang berlaku untuk pengidentifikasi heredoc juga berlaku untuk nowdoc, terutama yang berlaku untuk pengidentifikasi penutup.

Contoh #7 Contoh penggunaan nowdoc

gema<<<"EOD"
Contoh teks,
mencakup beberapa baris
menggunakan sintaks nowdoc. Garis miring terbalik selalu diartikan secara harfiah,
misalnya \\ dan \".
EOD;

Hasil menjalankan contoh ini:

Contoh teks yang mencakup beberapa baris menggunakan sintaks nowdoc. Garis miring terbalik selalu diperlakukan secara harfiah, seperti \\ dan \".

Contoh #8 Contoh kutipan string Nowdoc dengan variabel

/* Contoh yang lebih kompleks dengan variabel. */
kelas foo
{
publik $foo ;
publik $bar ;

Fungsi__konstruksi()
{
$ini -> foo = "Foo" ;
$ini -> bar = array("Bar1", "Bar2" , "Bar3" );
}
}

$foo = foo baru();
$nama = "Nama" ;

gema<<<"EOT"
Nama saya adalah "$nama". Saya mencetak $foo->foo.
Sekarang saya mencetak ($foo->bar).
Ini seharusnya tidak menghasilkan huruf kapital "A": \x41
EOT;
?>

Hasil menjalankan contoh ini:

Nama saya adalah "$nama". Saya mencetak $foo->foo. Sekarang saya mencetak ($foo->bar). Ini seharusnya tidak menghasilkan huruf kapital "A": \x41

Contoh #9 Contoh penggunaan data statis

kelas foo (
publik $bar =<<<"EOT"
batang
EOT;
}
?>

Komentar:

dukungan nowdoc telah ditambahkan di PHP 5.3.0.

Variabel Penanganan

Jika sebuah string ditentukan dalam tanda kutip ganda, atau menggunakan heredoc, variabel di dalamnya akan diproses.

Ada dua jenis sintaksis: sederhana dan kompleks. Sintaks sederhana lebih mudah dan nyaman. Itu memungkinkan untuk memproses variabel, nilai array ( Himpunan) atau properti objek ( obyek) dengan sedikit usaha.

Sintaks yang kompleks dapat diidentifikasi dengan tanda kurung kurawal yang mengelilingi ekspresi.

Sintaks sederhana

Jika penerjemah menemukan tanda dolar ( $ ), ini menangkap karakter sebanyak mungkin untuk membentuk nama variabel yang benar. Jika Anda ingin menentukan akhiran sebuah nama, sertakan nama variabel dalam kurung kurawal.

$jus = "apel" ;

echo "Dia minum $jus jus." . PHP_EOL;

// Salah. "s" adalah karakter yang valid untuk nama variabel, namun variabel tersebut diberi nama $juice.
echo "Dia minum jus yang terbuat dari $jus." ;

// Benar. Akhir dari nama variabel ditunjukkan secara ketat menggunakan tanda kurung:
echo "Dia minum jus yang terbuat dari $( jus ) s." ;
?>

Hasil menjalankan contoh ini:

Dia minum jus apel. Dia minum jus yang terbuat dari. Dia minum jus yang terbuat dari apel.

Elemen array ( Himpunan) atau properti objek ( obyek). Dalam indeks array ada tanda kurung siku penutup ( ] ) menandai akhir dari definisi indeks. Aturan yang sama berlaku untuk properti objek seperti halnya variabel sederhana.

Contoh #10 Contoh sintaksis sederhana

mendefinisikan("KOOLAID" , "koolaid1" );
$jus = array("apel" , "oranye" , "koolaid1" => "ungu" );

echo "Dia minum jus $jus [ 0 ]." . PHP_EOL;
echo "Dia minum jus $jus [ 1 ]." . PHP_EOL;
echo "Dia minum jus $juices [ koolaid1 ]." . PHP_EOL;

orang kelas (
publik $john = "John Smith" ;
publik $jane = "Jane Smith" ;
publik $robert = "Robert Paulsen" ;

Publik $smith = "Smith" ;
}

$orang = orang baru();

echo "$orang -> john minum $jus [ 0 ] jus." . PHP_EOL;
echo " $people -> john lalu menyapa $people -> jane ." . PHP_EOL;
echo "$people -> istri john menyapa $people -> robert." .PHP_EOL;
echo " $people -> robert menyapa dua $people -> smiths ." ; // Tidak akan berhasil
?>

Hasil menjalankan contoh ini:

Dia minum jus apel. Dia minum jus jeruk. Dia minum jus ungu. John Smith minum jus apel. John Smith kemudian menyapa Jane Smith. Istri John Smith menyapa Robert Paulsen.

PHP 7.1.0 menambahkan dukungan negatif indeks numerik.

Contoh #11 Indeks numerik negatif

$string = "string" ;
gema “Karakter pada indeks -2 sama dengan$string [- 2 ] ." , PHP_EOL ;
$string [- 3 ] = "o" ;
gema “Mengubah karakter pada posisi -3 menjadi 'o' menghasilkan baris berikut:$string." , PHP_EOL;
?>

Hasil menjalankan contoh ini:

Karakter dengan indeks -2 sama dengan n. Mengubah karakter pada posisi -3 menjadi "o" menghasilkan baris berikut: kuat

Untuk hal yang lebih kompleks, gunakan sintaksis yang kompleks.

Sintaks yang kompleks (keriting).

Disebut kompleks bukan karena sulit untuk dipahami, tetapi karena memungkinkan penggunaan ekspresi yang kompleks.

Variabel skalar, elemen array, atau properti objek apa pun yang dipetakan ke string dapat direpresentasikan dalam string menggunakan sintaks ini. Tulis saja ekspresi dengan cara yang sama seperti yang Anda lakukan di luar baris, lalu gabungkan { Dan } . Karena { tidak dapat di-escape, sintaks ini hanya akan dikenali ketika $ berikut secara langsung { . Menggunakan {\$ untuk mencetak {$ . Beberapa contoh ilustrasi:

// Tampilkan semua kesalahan
error_reporting(E_ALL);

$hebat = "hebat" ;

// Tidak berfungsi, keluaran: Ini (bagus)
echo "Ini ( $bagus )" ;

// Berfungsi, keluaran: Ini bagus
echo "Ini ( $bagus ) ";

// Berfungsi
gema “Kotak ini luas( $persegi -> lebar ) 00 sentimeter." ;

// Berfungsi, kata kunci yang dikutip hanya berfungsi dengan sintaks kurung kurawal
echo "Ini berhasil: ( $arr [ "kunci" ]) ";

// Berfungsi
echo "Ini berhasil: ( $arr [ 4 ][ 3 ]) ";

// Ini tidak valid karena alasan yang sama seperti $foo di luar
// garis. Dengan kata lain, ini akan tetap berfungsi,
// tetapi karena PHP mencari konstanta foo terlebih dahulu, hal ini akan menyebabkan
// tingkat kesalahan E_NOTICE (konstanta tidak terdefinisi).
gema "Itu tidak benar:( $arr [ foo ][ 3 ]) " ;

// Berfungsi. Saat menggunakan array multidimensi secara internal
// baris selalu menggunakan kurung kurawal
echo "Ini berhasil: ( $arr [ "foo" ][ 3 ]) ";

// Berfungsi.
gema "Ini berhasil: ". $arr [ "foo" ][ 3 ];

gema "Ini juga berhasil:( $obj -> nilai [ 3 ]-> nama ) " ;

gema "Ini adalah nilai dari variabel bernama$nama : ($( $nama )) " ;

gema "Ini adalah nilai nama variabel yang getName() kembalikan:($( getNama ())) ";

gema "Ini adalah nilai variabel berdasarkan nama yang \$object->getName() kembalikan:($( $objek -> getName ())) " ;

// Tidak berfungsi, keluaran: Inilah yang getName() kembalikan: (getName())
gema "Inilah yang getName() kembalikan: (getName())";
?>

Dimungkinkan juga untuk mengakses properti objek dalam string menggunakan sintaks ini.

kelas foo (
var $bar = "Saya bar." ;
}

$foo = foo baru();
$bar = "batang" ;
$baz = array("foo" , "bar" , "baz" , "quux" );
echo " ( $foo -> $bar ) \n" ;
echo " ( $foo ->( $baz [ 1 ])) \n" ;
?>

Hasil menjalankan contoh ini:

Aku Bar. Aku Bar.

Komentar:

Fungsi, pemanggilan metode, variabel kelas statis, dan konstanta kelas bekerja secara internal {$} , dimulai dengan PHP 5. Namun, nilai yang diberikan akan diperlakukan sebagai nama variabel dalam konteks yang sama dengan baris yang mendefinisikannya. Menggunakan kurung kurawal tunggal ( {} ) tidak akan berfungsi untuk mengakses nilai fungsi, metode, konstanta kelas, atau variabel kelas statis.

// Tampilkan semua kesalahan
error_reporting(E_ALL);

bir kelas (
const minuman ringan = "rootbeer" ;
publik statis $ale = "ipa" ;
}

$rootbeer = "A & W" ;
$ipa = "Alexander Keith\"s" ;

// Ini berhasil, outputnya: Saya ingin A & W
echo "Saya mau ($( bir :: minuman ringan )) \n" ;

// Ini juga bisa, keluaran: Saya ingin milik Alexander Keith
echo "Saya mau ($( bir :: $ale )) \n" ;
?>

Mengakses dan mengubah karakter dalam string

Karakter dalam string dapat digunakan dan dimodifikasi dengan menentukan offsetnya dari awal string, dimulai dari nol, dalam tanda kurung siku setelah string, misalnya $str . Bayangkan string untuk tujuan ini sebagai array karakter. Jika Anda perlu mendapatkan atau mengganti lebih dari 1 karakter, Anda dapat menggunakan fungsinya substr() Dan substr_replace().

Komentar: Pada PHP 7.1.0, nilai offset negatif didukung. Mereka menentukan offset dari akhir baris. Offset negatif sebelumnya menyebabkan kesalahan level E_PEMBERITAHUAN saat dibaca (mengembalikan string kosong) atau E_PERINGATAN saat menulis (membiarkan baris tidak berubah).

Komentar: Karakter dalam string juga dapat diakses menggunakan kurung kurawal, misalnya $str(42) .

Perhatian

Mencoba menulis ke offset di luar batas garis akan mengisi string dengan spasi hingga offset tersebut. Tipe non-integer akan diubah menjadi tipe integer. Jenis offset yang salah akan menyebabkan kesalahan level E_PERINGATAN. Hanya karakter pertama dari string yang ditetapkan yang digunakan. Pada PHP 7.1.0, menetapkan string kosong akan menyebabkan kesalahan fatal. Sebelumnya, dalam kasus ini, nol byte (NULL) ditetapkan.

Perhatian

String dalam PHP secara internal adalah array byte. Akibatnya, mengakses atau memodifikasi string pada offset bukanlah pengkodean multi-byte yang aman, dan hanya boleh dilakukan dengan string dalam pengkodean byte tunggal, seperti ISO-8859-1.

Komentar: Sejak PHP 7.1.0, penggunaan indeks kosong menyebabkan kesalahan fatal sebelumnya, dalam hal ini, string dikonversi ke array tanpa peringatan.

Contoh #12 Beberapa contoh string

// Dapatkan karakter pertama dari string
$str = "Ini adalah ujian." ;
$pertama = $str [ 0 ];

// Dapatkan karakter ketiga dari string
$ketiga = $str [ 2 ];

// Dapatkan karakter terakhir dari string
$str = "Ini masih ujian." ;
$terakhir = $str [ strlen ($str ) - 1 ];

// Mengubah karakter terakhir dari baris tersebut
$str = "Lihat ke laut" ;
$str [ strlen ($str )- 1 ] = "e" ;

?>

Mulai PHP 5.4, offset dalam string harus ditentukan sebagai bilangan bulat atau string yang berisi angka, jika tidak, peringatan akan dikeluarkan. Sebelumnya offset diberikan oleh string like "foo", tanpa peringatan diubah menjadi 0 .

Contoh #13 Perbedaan PHP 5.3 dan PHP 5.4

$str = "abc" ;

Var_dump($str["1"]);
var_dump (isset($str [ "1" ]));

Var_dump($str["1.0"]);
var_dump (isset($str [ "1.0" ]));

Var_dump($str["x"]);
var_dump (isset($str [ "x" ]));

Var_dump($str["1x"]);
var_dump (isset($str [ "1x" ]));
?>

Hasil menjalankan contoh ini di PHP 5.3:

string(1) "b" bool(benar) string(1) "b" bool(benar) string(1) "a" bool(benar) string(1) "b" bool(benar)

Hasil menjalankan contoh ini di PHP 5.4:

string(1) "b" bool(true) Peringatan: string ilegal offset "1.0" di /tmp/t.php on line 7 string(1) "b" bool(false) Peringatan: string ilegal offset "x" di / tmp/t.php pada baris 9 string(1) "a" bool(salah) string(1) "b" bool(salah)

Komentar:

Mencoba mengakses variabel tipe lain (tidak termasuk array atau objek yang mengimplementasikan antarmuka tertentu) menggunakan atau {} diam-diam akan kembali BATAL.

Komentar:

PHP 5.5 menambahkan dukungan untuk mengakses karakter dalam string literal menggunakan sintaksis atau {} .

Ada banyak fungsi berguna untuk memodifikasi string.

Fungsi dasar dijelaskan di bagian fungsi string, dan untuk pencarian dan penggantian lanjutan, fungsi ekspresi reguler yang kompatibel dengan Perl.

Konversikan ke string

Nilai dapat dikonversi menjadi string menggunakan cast (rangkaian), atau fungsi strval(). Dalam ekspresi yang memerlukan string, konversi terjadi secara otomatis. Ini terjadi ketika Anda menggunakan fungsi gema atau mencetak, atau ketika nilai suatu variabel dibandingkan dengan string. Membaca bagian Tipe dan Manipulasi Tipe di manual ini akan memperjelas hal berikut. Lihat juga tipe set().

Array selalu dikonversi menjadi string "Himpunan", sehingga Anda tidak dapat menampilkan isi array ( Himpunan), menggunakan gema atau mencetak untuk melihat apa isinya. Untuk melihat satu elemen, gunakan sesuatu seperti gema $arr["foo"]. Lihat di bawah untuk tips tentang cara menampilkan/melihat semua konten.

Untuk mengonversi variabel tipe "Obyek" dalam tipe rangkaian Metode ajaib __toString digunakan.

Arti BATAL selalu dikonversi ke string kosong.

Seperti yang Anda lihat di atas, mengonversi array, objek, atau sumber daya menjadi string secara langsung tidak memberikan informasi berguna apa pun tentang nilai itu sendiri selain tipenya. Cara yang lebih baik untuk menampilkan nilai untuk debugging adalah dengan menggunakan fungsi cetak_r() Dan var_dump().

Sebagian besar nilai dalam PHP dapat dikonversi menjadi string untuk penyimpanan persisten. Metode ini disebut serialisasi dan dapat dilakukan dengan menggunakan fungsi tersebut membuat serial().

Mengubah string menjadi angka

Jika string dikenali sebagai nilai numerik, nilai dan jenis yang dihasilkan ditentukan sebagai berikut.

Jika string tidak mengandung karakter apa pun ".", "e", atau "E", dan nilai angka tersebut berada dalam rentang bilangan bulat (didefinisikan PHP_INT_MAX), string akan dikenali sebagai bilangan bulat ( bilangan bulat). Dalam semua kasus lainnya, ini dianggap sebagai bilangan floating point ( mengambang).

Nilainya ditentukan oleh awal string. Jika baris dimulai dengan nilai numerik yang valid, nilai tersebut akan digunakan. Jika tidak maka nilainya akan menjadi 0 (nol). Nilai numerik yang valid adalah satu digit atau lebih (yang mungkin berisi titik desimal), yang dapat diawali dengan tanda diikuti dengan eksponen opsional. Eksponennya adalah "e" atau "E" diikuti oleh satu atau lebih digit.

$foo = 1 + "10,5" ; // $foo adalah pelampung (11.5)
$foo = 1 + "-1.3e3" ; // $foo adalah pelampung (-1299)
$foo = 1 + "bob-1.3e3" ; // $foo adalah bilangan bulat (1)
$foo = 1 + "bob3" ; // $foo adalah bilangan bulat (1)
$foo = 1 + "10 Babi Kecil" ; // $foo adalah bilangan bulat (11)
$foo = 4 + "10.2 Babi Kecil" ; // $foo adalah pelampung (14.2)
$foo = "10,0 babi " + 1 ; // $foo adalah mengambang (11)
$foo = "10.0 babi " + 1.0 ; // $foo adalah mengambang (11)
?>

Untuk informasi selengkapnya tentang konversi ini, lihat bagian strtod(3) dalam dokumentasi Unix.

Jika Anda ingin menguji salah satu contoh di bagian ini, salin dan tempel contoh tersebut dan baris berikut untuk melihat apa yang terjadi:

gema "\$foo== $foo ; ketik: " . gettype ($foo) . "
\N" ;
?>

Jangan berharap mendapatkan kode karakter dengan mengubahnya menjadi bilangan bulat (seperti yang dilakukan, misalnya, di C). Untuk mengonversi karakter ke kode ASCII dan sebaliknya, gunakan fungsi pesanan() Dan chr().

Detail implementasi tipe string

7 tahun yang lalu

Dokumentasi tidak menyebutkannya, tetapi titik koma penutup di akhir dokumen heredoc sebenarnya ditafsirkan sebagai titik koma sebenarnya, dan oleh karena itu, terkadang menyebabkan kesalahan sintaksis.

$foo =<<abcd
AKHIR;
?>

Ini tidak:

foo(<<abcd
AKHIR;
);
// kesalahan sintaksis, tidak terduga ";"
?>

Tanpa titik koma, ini berfungsi dengan baik:

foo(<<abcd
AKHIR
);
?>

3 tahun yang lalu

Anda dapat menggunakan string seperti array char (seperti C)

$a = "Uji susunan string";

var_dump($a);
// Mengembalikan string(17) "Tes array string"

var_dump($a);
// Mengembalikan string(1) "S"

// -- Dengan pemeran array --
var_dump((array) $a);
// Kembalikan array(1) ( => string(17) "Uji array string")

var_dump((array) $a);
// Mengembalikan string(17) "S"

Norihiori

1 tahun yang lalu

Ekspresi tunggal apa pun, betapapun rumitnya, yang dimulai dengan $ (yaitu, variabel) dapat disematkan () dalam string yang diberi tanda kutip ganda:

Echo "Ekspresi ( $h -> q ()[ "x)" ]-> p (9 == 0 ? 17 : 42 )) akan diuraikan sebaik ". $h -> q ()[ "x)" ]-> p (9 == 0 ? 17 : 42 ) . "melakukan." ;

?>

2 tahun lalu

Keduanya harus bekerja :(

Pengujian Kelas (
publik statis $VAR = "statis";
public const VAR = "konstan" ;

Fungsi publik sayHelloStatic() (
echo "halo: ( $ini :: $VAR ) ";
}

Fungsi publik sayHelloConst() (
echo "halo: ( $ini ::VAR) "; //Kesalahan parsing: kesalahan sintaksis, tak terduga ")", mengharapkan "["
}
}

$obj = Pengujian baru();
$obj -> sayHelloStatic();
$obj -> ucapkanHaloConst ();

14 tahun yang lalu

Anda dapat menggunakan sintaksis kompleks untuk memasukkan nilai properti objek DAN metode objek ke dalam string. Misalnya...
kelasTes{
publik
$satu= 1 ;
fungsi publik
dua() {
kembali
2 ;
}
}
$tes= baruTes();
gema
"foo{ $tes-> satu} batang{ $tes-> dua()} " ;
?>
Akan menampilkan "foo 1 bar 2".

Namun, Anda tidak dapat melakukan ini untuk semua nilai di namespace Anda. Konstanta kelas dan properti/metode statis tidak akan berfungsi karena sintaksis kompleks mencari "$".
kelasTes{
konstanta
SATU= 1 ;
}
gema
"foo (Uji::SATU) bilah";
?>
Ini akan menampilkan "foo (Test::one) bar". Konstanta dan properti statis mengharuskan Anda memecah string.

6 tahun yang lalu

Angka nol di awal string (paling tidak mengejutkan) tidak diperlakukan sebagai oktal.
Mempertimbangkan:
$x = "0123" + 0;
$y = 0123 + 0;
echo "x adalah $x, y adalah $y"; //mencetak "x adalah 123, y adalah 83"
dengan kata lain:
* angka nol di depan dalam literal numerik dalam kode sumber ditafsirkan sebagai "oktal", c.f. strtol().
* angka nol di awal string (misalnya data yang dikirimkan pengguna), ketika dimasukkan (secara implisit atau eksplisit) ke bilangan bulat akan diabaikan, dan dianggap sebagai desimal, c.f. strtod().

3 tahun yang lalu

Berhati-hatilah agar konsisten dengan "Konversi string ke angka":

jika ("123abc"== 123 ) gema"(intstr == int) salah menguji sebagai benar.";

// Karena salah satu sisinya adalah angka, string salah dikonversi dari intstr ke int, yang kemudian cocok dengan nomor tes.

// Benar untuk semua kondisi seperti pernyataan if dan switch (mungkin juga perulangan while)!

// Ini bisa menjadi risiko keamanan yang sangat besar ketika menguji/menggunakan/menyimpan input pengguna, sambil mengharapkan dan menguji hanya bilangan bulat.

// Tampaknya satu-satunya perbaikan adalah 123 menjadi string sebagai "123" sehingga tidak ada konversi yang terjadi.

?>

10 tahun yang lalu

Berikut adalah peretasan mudah yang memungkinkan string bertanda kutip ganda dan dokumen di sini memuat ekspresi arbitrer dalam sintaks kurung kurawal, termasuk konstanta dan pemanggilan fungsi lainnya:

// Deklarasi peretasan
fungsi_expr($v) (kembali$v; }
$_expr= "_expr";

// Taman bermain kita
mendefinisikan("qwe", "asd");
mendefinisikan("zxc", 5 );

$a= 3 ;
$b= 4 ;

fungsi C($a, $b) (kembali$a+ $b; }

//Penggunaan
gema"pra{ $_expr(1 + 2 )} pos\n"; // menampilkan "sebelum 3 postingan"
gema"pra{ $_expr(qwe)} pos\n"; // menampilkan "postingan sebelum asd"
gema"pra{ $_expr(C($a, $b)+ zxc* 2 )} pos\n"; // menampilkan "postingan sebelum 17"

// Sintaks umum adalah ($_expr(...))
?>

11 tahun yang lalu

Untuk menyelamatkan pikiran Anda jangan membaca komentar sebelumnya tentang tanggal ;)

Ketika kedua string dapat dikonversi ke numerik (dalam pengujian ("$a" > "$b") maka numerik yang dihasilkan akan digunakan, jika tidak, string LENGKAP akan dibandingkan char-by-char:

var_dump("1.22" > "01.23" ); //bodoh(salah)
var_dump("1.22.00" > "01.23.00" ); //bodoh(benar)
var_dump("1-22-00" > "01-23-00" ); //bodoh(benar)
var_dump((mengambang)"1.22.00" > (mengambang)"01.23.00" ); //bodoh(salah)
?>

2 tahun lalu

Saya pikir akan sangat membantu untuk menambahkan komentar ini sehingga informasinya setidaknya muncul di halaman kanan situs PHP.

Perhatikan bahwa jika Anda ingin menggunakan string tanda kutip ganda dengan kunci asosiatif, Anda mungkin mengalami kesalahan T_ENCAPSED_AND_WHITESPACE. Beberapa orang menganggap ini sebagai salah satu pesan kesalahan yang kurang jelas.

Ekspresi seperti:

$buah=susunan(
"A"=> "apel",
"B"=> "pisang",
//dll
);

Mencetak "Ini adalah sebuah$buah[ "A"]"; // T_ENCAPSED_AND_WHITESPACE
?>

pasti akan hancur berkeping-keping.

Anda dapat mengatasinya dengan cara berikut:

mencetak"Ini adalah sebuah$buah[ A] " ; // tanda kutip kuncinya
mencetak"Ini adalah sebuah${ buah[ "A"]} " ; // Sintaks Kompleks
mencetak"Ini adalah sebuah{ $buah[ "A"]} " ; // Variasi Sintaks yang Kompleks
?>

Saya memiliki preferensi pribadi untuk variasi terakhir karena lebih alami dan lebih dekat dengan ekspresi di luar string.

Tidak jelas (setidaknya bagi saya) mengapa PHP salah menafsirkan kutipan tunggal di dalam ekspresi tetapi saya membayangkan itu ada hubungannya dengan fakta bahwa kutipan bukan bagian dari string nilai - setelah string sudah diurai, tanda kutip saja menghalangi...?