Adakah logik kompleks mungkin dalam PHP? PHP: Pengendali logik - Manual. Operasi perbandingan dan peraturan pembohongan

Pelajaran akan merangkumi pernyataan php bersyarat: pernyataan if dan pernyataan suis

Pernyataan bersyarat PHP diwakili oleh tiga binaan utama:

  • pengendali keadaan jika,
  • operator suis suis
  • Dan pengendali ternary.

Mari kita lihat dengan lebih dekat setiap daripada mereka.

PHP if pernyataan

Rajah 3.1. Kenyataan IF bersyarat, versi pendek


nasi. 3.2. IF ELSE Sintaks Pernyataan Bersyarat


nasi. 3.3. Sintaks penuh pernyataan bersyarat IF elseif

Mari kita ringkaskan:

Sintaks penuh:

if (condition) ( // if the condition is true operator1; operator2; ) elseif(condition) ( operator1; ... ) else ( // if the condition is false operator1; operator2; )

  • Sintaks yang dipendekkan boleh tidak mengandungi bahagian klausa else dan tidak mengandungi syarat elseif tambahan
  • Daripada perkataan fungsi elseif, anda boleh menulis else if (secara berasingan)
  • Terdapat beberapa elseif dalam satu jika dibina. Ungkapan elseif pertama sama dengan TRUE akan dilaksanakan.
  • Jika terdapat syarat elseif alternatif, klausa else mesti datang terakhir dalam sintaks.

Pernyataan bersyarat boleh menggunakan titik bertindih: bukannya pendakap kerinting. Dalam kes ini, pernyataan berakhir dengan kata bantu endif

nasi. 3.4. Pernyataan bersyarat Jika dan Endif dalam php

Contoh:

if($x > $y): echo $x." lebih besar daripada ".$y; elseif($x == $y): // apabila menggunakan ":" anda tidak boleh menulis secara berasingan lagi jika echo $x." sama dengan ".$y; else: echo $x." bukan > dan bukan = ".$y; endif;

Penting: Apabila menggunakan titik bertindih dan bukannya pendakap kerinting dalam pembinaan, jika tidak boleh ditulis dalam dua perkataan!

Operasi logik dalam keadaan

Keadaan if dalam kurungan mungkin mengandungi operasi berikut:

Contoh: semak nilai pembolehubah berangka: jika kurang daripada atau sama dengan 10, paparkan mesej "nombor kurang daripada atau sama dengan 10", jika tidak, paparkan mesej "nombor lebih besar daripada 10"


Penyelesaian:

$nombor=15; jika ($nombor<=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Blok kod PHP boleh dipecahkan, mari lihat contoh:

Contoh: Paparkan kod html pada skrin "a sama dengan 4", jika pembolehubah $a benar-benar sama dengan 4


1 Penyelesaian:
1 2 3 4

2 Penyelesaian:

1 2 3 A bersamaan dengan 4

A bersamaan dengan 4

kerja php 3_1: Paparkan terjemahan warna daripada bahasa Inggeris ke bahasa Rusia, semak nilai pembolehubah (di mana warna ditetapkan: $a="blue")


kerja php 3_2: Cari maksimum tiga nombor

Operasi perbandingan dan peraturan pembohongan

Konstruk if dalam kurungan mesti mengandungi ungkapan logik atau pembolehubah, yang dianggap dari sudut pandangan algebra logik, mengembalikan nilai sama ada benar atau salah

Itu. pembolehubah tunggal boleh bertindak sebagai syarat. Mari lihat contoh:

1 2 3 4 $a = 1 ; jika ($a) ( echo $a; )

$a=1; jika ($a) ( echo $a; )

Dalam contoh, penterjemah bahasa PHP akan menganggap pembolehubah dalam kurungan sebagai peraturan pembohongan:

Peraturan PEMBOHONGAN atau apa yang dianggap palsu:

  • logik Salah
  • keseluruhan sifar ( 0 )
  • sifar sebenar ( 0.0 )
  • baris kosong dan rentetan «0»
  • tatasusunan tanpa unsur
  • objek tanpa pembolehubah
  • jenis khas NULL

Oleh itu, dalam contoh yang dipertimbangkan, pembolehubah $a adalah sama dengan satu, oleh itu keadaan akan menjadi benar dan pengendali menggemakan $a; akan memaparkan nilai pembolehubah.

kerja php 3_3: pembolehubah a dengan nilai rentetan diberikan. Jika a sama dengan nama, maka cetak "Hello, nama!", jika a adalah sama dengan nilai kosong, maka output "Hello orang yang tidak dikenali!"

Konstruk logik DAN ATAU dan TIDAK dalam operator bersyarat

  1. Kadang-kadang perlu menyediakan untuk memenuhi beberapa syarat secara serentak. Kemudian syarat digabungkan operator logik DAN — && :
  2. $a=1; jika ($a>0 || $a>1) ( echo "a > 0 atau a > 1"; )

  3. Untuk menunjukkan jika syarat adalah palsu, gunakan operator logik BUKAN — ! :
  4. 1 2 3 4 $a = 1 ; jika (! ($a< 0 ) ) { echo "a не < 0" ; }

    $a=1; jika (!($a<0)) { echo "a не < 0"; }

Tukar operator PHP

Pengendali suis atau "suis" menggantikan beberapa berturut-turut jika dibina. Dengan berbuat demikian, ia membandingkan satu pembolehubah dengan berbilang nilai. Oleh itu, ini adalah cara yang paling mudah untuk menganjurkan pelbagai cawangan.

Sintaks:

1 2 3 4 5 6 7 8 9 10 suis ($pembolehubah) ( kes "value1" : operator1 ; break ; case "value2" : operator2 ; break ; case "value3" : operator3 ; break ; [ lalai : operator4 ; break ; ] )

suis($variable)( case "value1": operator1; break; case "value2": operator2; break; case "value3": operator3; break; )

  • Pengendali boleh menyemak kedua-dua nilai rentetan (kemudian ia dinyatakan dalam petikan) dan nilai berangka (tanpa petikan).
  • Pernyataan putus dalam pembinaan diperlukan. Ia keluar dari konstruk jika keadaan adalah benar dan pengendali yang sepadan dengan syarat dilaksanakan. Tanpa rehat, semua kenyataan kes akan dilaksanakan tanpa mengira kebenarannya.

nasi. 3.5. Pernyataan Suis Bersyarat


Contoh: tatasusunan dengan nama penuh lelaki diberikan. Semak elemen pertama tatasusunan dan, bergantung pada nama, paparkan ucapan dengan nama pendek.


Penyelesaian:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $nama = array ("Ivan" , "Peter" , "Semyon" ); suis ($nama [ 0 ] ) ( kes "Peter" : echo "Hello, Petya!" ; break ; case "Ivan" : echo "Hello, Vanya!" ; break ; case "Semyon" : echo "Hai, Vanya! " ; break ; default : echo "Hai, $nama!"; pecah ; )

$nama=array("Ivan","Peter","Semyon"); suis($nama)( case "Peter": echo "Hello, Petya!"; break; case "Ivan": echo "Hello, Vanya!"; break; case "Semyon": echo "Hello, Vanya!"; break ; lalai: echo "Hello, $namas!"; break; )

kerja php 3_4:

  • Buat pembolehubah $day dan tetapkan nilai angka arbitrari
  • Menggunakan binaan suis, cetak frasa "Ini hari bekerja", jika nilai pembolehubah $day berada dalam julat nombor dari 1 hingga 5 (termasuk)
  • Cetak frasa "Hari ini cuti", jika nilai pembolehubah $hari adalah sama dengan nombor 6 atau 7
  • Cetak frasa "Hari Tidak Diketahui", jika nilai pembolehubah $day tidak termasuk dalam julat nombor dari 1 hingga 7 (termasuk)

Lengkapkan kod:

1 2 3 4 5 6 7 8 9 10 11 12 ... suis (... ) ( kes 1 : kes 2 : ... gema "Ini hari bekerja"; pecah ; kes 6 : ... lalai : ... )

Suis(...)( kes 1: kes 2: ... echo "Hari bekerja"; rehat; kes 6: ... lalai: ... )

Operator ternary PHP

Operator ternary, iaitu dengan tiga operan, mempunyai sintaks yang agak mudah di sebelah kiri ? syarat ditulis, dan di sebelah kanan terdapat dua pengendali yang dipisahkan oleh tanda: , di sebelah kiri tanda pengendali dilaksanakan jika keadaan adalah benar, dan di sebelah kanan tanda: operator dilaksanakan jika syarat adalah salah.

syarat? operator1: operator2;

PHP menyokong operator logik standard AND dan && , OR dan || , ! (bukan) dan XOR . Operator logik membenarkan anda membandingkan hasil dua operan (nilai atau ungkapan) untuk menentukan sama ada satu atau kedua-duanya mengembalikan benar atau palsu dan memilih sama ada untuk meneruskan pelaksanaan skrip dengan sewajarnya berdasarkan nilai yang dikembalikan. Seperti pengendali perbandingan, pengendali logik mengembalikan nilai Boolean tunggal - benar atau salah, bergantung pada nilai pada kedua-dua belah operator.

Logik ATAU (ATAU dan ||)

Operator OR logik dilambangkan sebagai OR atau || . Ia melakukan operasi OR logik pada dua operan. Jika satu atau kedua-dua operan adalah benar, ia akan kembali benar. Jika kedua-dua operan palsu, ia mengembalikan palsu. Anda mungkin mempunyai soalan: mengapa mereka membuat dua versi satu pengendali? Inti dari dua varian berbeza operator OR logik ialah ia beroperasi dengan keutamaan yang berbeza.

Mula-mula, mari kita lihat cara pengendali || berfungsi. . Oleh itu, jika satu atau kedua-dua operannya adalah benar, ia akan kembali benar . Jika kedua-dua operan mengembalikan nilai palsu, ia akan mengembalikan false .

Operator OR berfungsi sama seperti operator ||. dengan satu pengecualian, jika operator OR digunakan dengan tugasan, ia akan menilai dan mengembalikan nilai operan kiri terlebih dahulu, jika tidak, ia berfungsi sama seperti operator ||. , iaitu jika satu atau kedua-dua operannya adalah benar, ia akan kembali benar . Jika kedua-dua operan mengembalikan false, ia akan mengembalikan false .

Untuk menjelaskan cara ia berfungsi, mari berikan contoh berikut:

1 // Mula-mula pembolehubah diberikan nilai palsu, dan kemudian operan kedua dinilai // Tindakan keutamaan: ($var2 = palsu) atau benar $var2 = palsu atau benar; echo $var2; // false tidak dicetak // ($var3 = 0) atau 3 $var3 = 0 atau 3; bergema"
$var3"; // => 0 ?>

Mana-mana operator perbandingan dan logik boleh digabungkan menjadi struktur yang lebih kompleks:

Terdapat satu lagi perkara penting yang patut disebut berkenaan kedua-dua operator OR dan ||. . Operator OR logik memulakan penilaiannya dengan operan kirinya; jika ia mengembalikan benar, maka operan kanan tidak akan dinilai. Ini menjimatkan masa pelaksanaan, tetapi berhati-hati mesti diambil untuk memastikan bahawa kod yang mungkin bergantung pada pengendalian program yang betul tidak diletakkan dalam operan sebelah kanan.

Logik DAN (DAN dan &&)

Operator logik AND dilambangkan sebagai AND atau && . Ia melakukan operasi logik DAN pada dua operan. Ia mengembalikan benar jika dan hanya jika kedua-dua operan menilai kepada benar. Jika satu atau kedua - dua operan mengembalikan palsu , operator mengembalikan palsu . Maksud dua versi berbeza pengendali "logik DAN" adalah sama dengan dua pengendali sebelumnya, iaitu, ia berfungsi dengan keutamaan yang berbeza.

Mula-mula, mari kita lihat cara pengendali && berfungsi. Oleh itu, jika kedua-dua operannya adalah benar, ia akan kembali benar . Jika sekurang-kurangnya satu atau kedua-dua operannya mengembalikan palsu, ia juga akan mengembalikan palsu.

Operator AND berfungsi sama seperti operator && dengan satu pengecualian, jika operator AND digunakan dengan tugasan, ia akan menilai dan mengembalikan nilai operan kiri terlebih dahulu, jika tidak, ia berfungsi sama seperti operator &&. Jika sekurang-kurangnya satu daripada operannya mengembalikan palsu, ia juga akan mengembalikan palsu, dan jika kedua-dua operan mengembalikan palsu, ia akan mengembalikan palsu.

Untuk memahami, mari kita lihat cara ini berfungsi dalam amalan:

$bar3"; // => 9 ?>

Eksklusif ATAU (XOR)

Pengendali OR eksklusif ditandakan sebagai XOR. Ia kembali benar jika satu dan hanya satu operannya adalah benar. Jika kedua-dua operan adalah benar, operator akan mengembalikan palsu.

Oleh kerana pengendali XOR mempunyai keutamaan yang sama seperti pengendali DAN dan ATAU (lebih rendah daripada pengendali tugasan), dan ia digunakan dalam ungkapan tugasan, ia terlebih dahulu menilai dan mengembalikan nilai operan kiri.

6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(true xor true); // false var_dump((2< 3) xor (5 != 5)); // true ?>

Logik BUKAN (!)

Operator NOT logik, juga dipanggil penolakan, ditunjukkan oleh tanda! . Ia adalah operator unary yang diletakkan sebelum operan tunggal. Operator NOT logik digunakan untuk menyongsangkan nilai logik operannya dan sentiasa mengembalikan benar atau salah.

Jika anda perlu menyongsangkan nilai ungkapan, seperti a && b , anda perlu menggunakan kurungan: !(a && b) . Juga dengan bantuan pengendali! Anda boleh menukar sebarang nilai x kepada setara Boolean dengan menggunakan operator: !!x dua kali.

Dua pernyataan utama yang menyediakan struktur percabangan bersyarat ialah jika dan suis. Pernyataan if yang paling meluas digunakan dalam struktur lompat bersyarat. Sebaliknya, dalam situasi tertentu, terutamanya jika anda perlu menavigasi melalui salah satu daripada banyak cabang bergantung pada nilai ungkapan tunggal, dan penggunaan beberapa pernyataan if membawa kepada kod yang lebih kompleks, pernyataan suis menjadi lebih mudah .

Sebelum mengkaji pengendali ini, anda perlu memahami ungkapan dan operasi logik.

Operasi logik

Operasi logik membolehkan anda menggabungkan nilai logik (juga dipanggil nilai kebenaran) untuk menghasilkan nilai logik baharu. Seperti yang ditunjukkan dalam jadual di bawah, PHP menyokong pengendali logik standard (dan, atau, tidak, dan xor), dengan dua yang pertama mempunyai versi alternatif.

Operasi Logik PHP
Operasi Penerangan
dan Operasi yang hasilnya benar jika dan hanya jika kedua-dua operannya adalah benar
atau Operasi yang hasilnya benar jika salah satu operannya (atau kedua-dua operan) adalah benar
! Operasi yang hasilnya benar jika operan tunggalnya (diberikan di sebelah kanan tanda operasi) adalah palsu, dan palsu jika operannya benar
xor Operasi yang hasilnya benar jika salah satu daripada operannya (tetapi bukan kedua-duanya) adalah benar
&& Sama seperti dan operator, tetapi mengikat operannya lebih ketat daripada operator ini
|| Sama seperti operator atau, tetapi mengikat operannya dengan lebih ketat daripada operator ini

Operasi && dan || sepatutnya biasa kepada pengaturcara C. Operasi! biasanya dipanggil bukan kerana ia menjadi penafian operan yang digunakan.

Untuk menguji sama ada kedua-dua operan adalah BENAR, anda menggunakan operator AND, yang juga boleh ditulis sebagai ampersand berganda (&&). Kedua-dua operator AND dan && adalah operator logik; satu-satunya perbezaan ialah operator && mempunyai keutamaan yang lebih tinggi daripada operator AND. Perkara yang sama berlaku untuk operator OR dan ||. Operator AND mengembalikan TRUE hanya jika kedua-dua operan adalah TRUE; jika tidak, FALSE dikembalikan.

Untuk menyemak sama ada sekurang-kurangnya satu operan adalah BENAR, anda menggunakan operator OR, yang juga boleh ditulis sebagai garis menegak berganda (||). Operator ini mengembalikan TRUE jika sekurang-kurangnya satu daripada operannya adalah TRUE.

Apabila menggunakan operator OR dalam program, ralat logik yang halus boleh muncul. Jika PHP mengesan bahawa operan pertama adalah BENAR, ia tidak akan menilai nilai operan kedua. Ini menjimatkan masa pelaksanaan, tetapi anda mesti berhati-hati untuk memastikan bahawa kod yang program bergantung pada untuk dijalankan dengan betul tidak diletakkan dalam operan kedua.

Operator XOR membenarkan anda menyemak sama ada hanya satu daripada operan (tetapi bukan kedua-duanya) adalah BENAR. Operator ini mengembalikan TRUE jika satu dan hanya satu daripada operannya adalah TRUE. Jika kedua-dua operan adalah BENAR, operator akan mengembalikan FALSE.

Anda boleh menyongsangkan nilai logik menggunakan operator NOT, yang sering ditulis sebagai tanda seru (!). Ia mengembalikan BENAR jika operan adalah FALSE dan FALSE jika operan adalah TRUE.

Jadual di bawah menunjukkan beberapa ungkapan Boolean dan keputusannya:

Operasi Perbandingan

Jadual di bawah menunjukkan operasi perbandingan yang boleh digunakan dengan sama ada nombor atau rentetan:

Operasi Perbandingan
Operasi Nama Penerangan
== sama Operasi yang hasilnya benar jika operannya sama dan palsu sebaliknya
!= Tidak sama Operasi yang hasilnya palsu jika operannya sama dan benar sebaliknya
< Kurang Operasi yang hasilnya benar jika operan kiri kurang daripada operan kanan, dan palsu sebaliknya
> Lagi Operasi yang hasilnya benar jika operan kiri lebih besar daripada operan kanan, dan palsu sebaliknya
<= Kurang atau sama Operasi yang hasilnya benar jika operan kiri kurang daripada atau sama dengan operan kanan, dan salah sebaliknya
>= Lebih atau sama Operasi yang hasilnya benar jika operan kiri lebih besar daripada atau sama dengan operan kanan, dan palsu sebaliknya
=== Secara identik Operasi yang hasilnya benar jika kedua-dua operan adalah sama dan jenis yang sama, dan palsu sebaliknya

Satu kesilapan biasa yang perlu anda lakukan ialah jangan mengelirukan pengendali tugasan (=) dengan pengendali perbandingan (==).

Keutamaan operasi

Sudah tentu, seseorang tidak boleh terlalu menggunakan gaya pengaturcaraan di mana urutan operasi ditentukan terutamanya oleh penggunaan peraturan keutamaan, kerana kod yang ditulis dalam gaya ini sukar difahami bagi mereka yang kemudiannya mengkajinya, tetapi perlu diperhatikan bahawa perbandingan operasi mempunyai keutamaan yang lebih tinggi daripada operasi logik. Ini bermakna pernyataan dengan ungkapan semak seperti di bawah

kod PHP $var1 = 14; $var2 = 15; jika (($var1< $var2) && ($var2 < 20)) echo "$var2 больше $var1 но меньше 20";

boleh ditulis semula sebagai

kod PHP ... jika ($var1< $var2 && $var2 < 20) ...

pernyataan if-else

Arahan jika membenarkan blok kod dilaksanakan jika ungkapan bersyarat dalam arahan ini bernilai BENAR; jika tidak blok kod tidak dilaksanakan. Sebarang ungkapan boleh digunakan sebagai syarat, termasuk ujian untuk nilai bukan sifar, kesamaan, NULL yang melibatkan pembolehubah dan nilai yang dikembalikan oleh fungsi.

Tidak kira syarat individu mana yang membentuk ayat bersyarat. Jika keadaan itu benar, kod atur cara yang disertakan dalam pendakap kerinting (()) dilaksanakan. Jika tidak, PHP mengabaikannya dan meneruskan untuk menyemak syarat kedua, menyemak semua syarat yang anda tulis sehingga ia mencapai pernyataan lain, selepas itu ia akan melaksanakan blok ini secara automatik. Pernyataan lain adalah pilihan.

Sintaks pernyataan if ialah:

Jika (ungkapan bersyarat) (blok kod program;)

Jika hasil penilaian ungkapan bersyarat adalah BENAR, maka blok kod program yang terletak selepas ia akan dilaksanakan. Dalam contoh berikut, jika $username ditetapkan kepada "Admin", mesej alu-aluan akan dipaparkan. Jika tidak, tiada apa yang akan berlaku:

kod PHP $nama pengguna = "Pentadbir"; if ($username == "Admin") ( echo "Selamat datang ke halaman pentadbir."; )

Jika blok kod program mengandungi hanya satu arahan, maka pendakap kerinting adalah pilihan, bagaimanapun, adalah kebiasaan yang baik untuk sentiasa menggunakannya, kerana ia menjadikan kod lebih mudah dibaca dan diedit.

Pernyataan lain pilihan ialah blok kod yang dilaksanakan secara lalai apabila ungkapan bersyarat dinilai kepada FALSE. Pernyataan else tidak boleh digunakan secara berasingan daripada pernyataan if kerana else tidak mempunyai ungkapan bersyarat sendiri. Iaitu, else dan if harus sentiasa bersama dalam kod anda:

pernyataan if and else $nama pengguna = "tiada pentadbir"; if ($username == "Admin") ( echo "Selamat datang ke halaman pentadbir."; ) else ( echo "Selamat datang ke halaman pengguna."; )

Ingat untuk menutup blok kod dalam pernyataan if dengan pendakap kerinting jika anda meletakkan pendakap kerinting pada permulaan blok. Blok else juga mesti mempunyai pendakap kerinting buka dan tutup, sama seperti blok if.

Ini semua bagus, kecuali apabila anda perlu menyemak beberapa syarat berturut-turut. Arahan sesuai untuk ini elseif. Ia membenarkan syarat tambahan untuk diuji sehingga benar ditemui atau blok lain dicapai. Setiap pernyataan elseif mempunyai blok kodnya sendiri yang diletakkan sejurus selepas ungkapan bersyarat pernyataan elseif. Pernyataan elseif datang selepas pernyataan if dan sebelum pernyataan else, jika ada.

Sintaks penyataan elseif adalah sedikit lebih rumit, tetapi contoh berikut akan membantu anda memahaminya:

Menyemak berbilang syarat $nama pengguna = "Tetamu"; if ($username == "Admin") ( echo "Selamat datang ke halaman pentadbir."; ) elseif ($username == "Tetamu") ( echo "Lihat tidak tersedia."; ) else ( echo "Selamat datang ke halaman pengguna.";)

Di sini dua syarat disemak dan, bergantung pada nilai pembolehubah $username, tindakan berbeza dilakukan. Dan masih ada peluang untuk melakukan sesuatu jika nilai pembolehubah berbeza daripada dua yang pertama.

Operator ternary?:

Operator ?: ialah operator ternary (ternary) yang mengambil tiga operan. Ia berfungsi serupa dengan pernyataan if, tetapi mengembalikan nilai satu daripada dua ungkapan. Ungkapan yang akan dinilai ditentukan oleh ungkapan bersyarat. Tanda bertindih (:) berfungsi sebagai pemisah ungkapan:

(syarat) ? evaluate_if_condition_true: evaluate_if_condition_false;

Contoh di bawah menyemak nilai dan mengembalikan rentetan berbeza bergantung pada sama ada ia BENAR atau SALAH:

Mencipta mesej menggunakan operator ?: $log masuk = BENAR; $pengguna = "Igor"; $banner = (!$log_masuk) ? "Daftar!" : "Selamat kembali, $user!"; echo $banner;

Agak jelas bahawa pernyataan di atas adalah bersamaan dengan pernyataan berikut:

kod PHP $log masuk = BENAR; $pengguna = "Igor"; jika (!$log_masuk) ( $banner = "Daftar!"; ) else ( $banner = "Selamat datang, $pengguna!"; ) echo $banner;

penyataan suis

Arahan suis membandingkan ungkapan dengan berbilang nilai. Sebagai peraturan, pembolehubah digunakan sebagai ungkapan, bergantung pada nilai yang mana blok kod tertentu mesti dilaksanakan. Sebagai contoh, bayangkan pembolehubah $action yang boleh mempunyai nilai "ADD", "MODIFY" (change) dan "DELETE" (delete). Pernyataan suis memudahkan untuk menentukan blok kod yang harus dilaksanakan untuk setiap nilai ini.

Untuk menunjukkan perbezaan antara penyataan jika dan tukar, mari kita uji pembolehubah terhadap berbilang nilai. Contoh di bawah menunjukkan kod program yang melaksanakan semakan sedemikian berdasarkan pernyataan if, dan dalam contoh berikut, berdasarkan pernyataan suis:

Menguji terhadap salah satu daripada beberapa nilai (jika pernyataan) if ($action == "TAMBAH") ( echo "Lakukan penambahan."; echo "Bilangan arahan dalam setiap blok adalah tidak terhad."; ) elseif ($action == "MODIFY") ( echo "Lakukan perubahan ."; ) elseif ($action == "DELETE") ( echo "Lakukan pemadaman."; ) Menguji terhadap salah satu daripada beberapa nilai (pernyataan suis) suis ($tindakan) ( kes "TAMBAH": echo "Lakukan penambahan."; echo "Bilangan arahan dalam setiap blok adalah tidak terhad."; putus; kes "MODIFY": echo "Lakukan perubahan."; putus; kes "DELETE" : echo "Lakukan pemadaman."; putus; )

Pernyataan suis mengambil nilai di sebelah kata kunci suis dan mula membandingkannya dengan semua nilai di sebelah kata kunci kes, mengikut susunan lokasi mereka dalam program. Jika padanan tidak ditemui, tiada satu pun blok akan dilaksanakan. Setelah padanan ditemui, blok kod yang sepadan dilaksanakan. Blok kod di bawah juga dilaksanakan - sehingga akhir pernyataan suis atau sehingga kata kunci rehat. Ini mudah untuk mengatur proses yang terdiri daripada beberapa langkah berturut-turut. Jika pengguna telah menyelesaikan beberapa langkah, dia akan dapat meneruskan proses dari tempat dia berhenti.

Ungkapan di sebelah pernyataan suis mesti mengembalikan nilai jenis primitif, seperti nombor atau rentetan. Tatasusunan hanya boleh digunakan sebagai elemen berasingan yang mempunyai nilai jenis asas.

Pilihan lalai

Jika nilai ungkapan bersyarat tidak sepadan dengan mana-mana pilihan yang dicadangkan dalam pernyataan kes, pernyataan suis dalam kes ini membolehkan anda melakukan sesuatu, sama seperti pernyataan else bagi pembinaan if, elseif, else. Untuk melakukan ini, anda perlu membuat arahan sebagai pilihan terakhir dalam senarai pilihan lalai:

Mencipta Mesej Ralat Menggunakan Pernyataan Lalai $action = "KELUARKAN"; suis ($tindakan) ( kes "TAMBAH": echo "Lakukan penambahan."; echo "Bilangan arahan dalam setiap blok adalah tidak terhad."; putus; kes "MODIFY": echo "Lakukan perubahan."; putus; case "DELETE" : echo "Lakukan pemadaman."; break; lalai: echo "Ralat: arahan $action tidak dibenarkan, ". "hanya perintah ADD, MODIFY dan DELETE boleh digunakan."; )

Sebagai tambahan kepada yang biasa, pernyataan suis menyokong sintaks alternatif - pembinaan kata kunci suis/suis tamat, mentakrifkan permulaan dan akhir pernyataan dan bukannya pendakap kerinting:

Pernyataan suis berakhir dengan suis hujung kata kunci suis ($action): case "ADD": echo "Lakukan penambahan."; echo "Bilangan arahan dalam setiap blok adalah tidak terhad."; pecah; case "MODIFY": echo "Lakukan pengubahsuaian."; pecah; kes "DELETE": echo "Lakukan pemadaman."; pecah; lalai: echo "Ralat: arahan $action tidak sah,". "Hanya arahan ADD, MODIFY dan DELETE boleh digunakan."; suis hujung;

Mengganggu pelaksanaan

Jika hanya blok kod yang sepadan dengan nilai tertentu akan dilaksanakan, maka kata kunci pemecahan hendaklah dimasukkan pada penghujung blok itu. Apabila jurubahasa PHP menemui kata kunci rehat, ia akan meneruskan untuk melaksanakan baris selepas pendakap kerinting penutup pernyataan suis (atau kata kunci suis akhir). Tetapi jika anda tidak menggunakan pernyataan putus, maka semakan diteruskan dalam cawangan kes berikutnya bagi konstruk suis. Di bawah adalah contoh:

Apa yang berlaku apabila tiada kenyataan putus $action="PERINTAH BERKUMPUL"; suis ($action) ( case "ADUN PESANAN": echo "Pasang susunan.
"; case "PACKAGE": echo "PACKAGE.
"; case "SHIP": echo "Hantar kepada pelanggan.
"; }

Jika pembolehubah $action ditetapkan kepada "ASSEMBLE ORDER", hasil serpihan ini adalah seperti berikut:

Kumpul pesanan. Untuk membungkus. Hantar kepada pelanggan.

Dengan mengandaikan bahawa peringkat binaan telah pun selesai dan pembolehubah $action ditetapkan kepada "PACKAGE", hasil berikut akan diperoleh:

Untuk membungkus. Hantar kepada pelanggan.

Kadangkala, tidak mempunyai pernyataan rehat adalah berguna, seperti dalam contoh di atas di mana peringkat pesanan dibentuk, tetapi dalam kebanyakan kes pernyataan ini harus digunakan.

Jenis data Kitaran 1 2 3 4 5 6 7 8 9 10

Jadi, kita sudah tahu cara melaksanakan kod yang memenuhi syarat tertentu. Tetapi sehingga saat ini hanya ada satu syarat. Bagaimana jika kod mesti dilaksanakan jika beberapa syarat dipenuhi sekaligus?

Untuk menyelesaikan masalah ini, terdapat operator logik:

= 5 && $harga<= 10) echo "Это число находится между 5 и 10"; ?>

Operator &&, juga dipanggil logik DAN, menukar nilai di sebelah kiri dan kanan kepada jenis Boolean, dan kemudian dengan sendirinya mengembalikan nilai Boolean: benar jika kiri dan kanan adalah benar, atau palsu jika salah satu syarat adalah palsu.

Dalam erti kata lain, jika kedua-dua syarat adalah benar, maka pengendali && mengembalikan benar. Inilah yang ditunjukkan oleh nama pengendali.

Operator || atau logik ATAU kembali benar apabila sekurang-kurangnya satu daripada dua syarat adalah benar:

5 || 1 > 2) echo "Syaratnya dipenuhi."; ?>

Dalam kod di atas, arahan gema akan dilaksanakan kerana salah satu syarat adalah benar.

Semua operator logik dalam PHP

Antara operator && dan dan, serta antara || dan atau terdapat sedikit perbezaan - susunan pelaksanaan.

Seperti yang anda ketahui, pendaraban mempunyai keutamaan yang lebih tinggi daripada penambahan. Jadi, pengendali dan dan atau mempunyai keutamaan yang lebih rendah daripada pengendali tugasan =. Hasilnya dapat dilihat dalam contoh berikut:

Pelik kan? Oleh kerana y = mempunyai keutamaan yang lebih tinggi, PHP akan mentafsir kod seperti ini:

($var = benar) dan palsu;

Itu. mula-mula ia menetapkan $var kepada benar dan kemudian ia melakukan operasi benar dan salah, yang tidak bermakna kerana ia tidak menjejaskan nilai pembolehubah.

Di bawah ialah jadual dengan keutamaan pengendali. Anda telah pun bertemu sebahagian daripada mereka. Semakin tinggi pengendali berada dalam jadual, semakin tinggi keutamaannya.

  • ++ -- ~ (int) (float) (rentetan) (array) (objek) (bool) @
  • * / %
  • + - .
  • < <= > >=
  • == != === !== <> <=>
  • ? : (pengendali ternari)
  • = += -= *= **= /= .= %= &= |= ^= <<= >>=

Sekarang kita boleh menentukan bahawa keutamaan pengendali perbandingan (==, !=, dsb.) adalah lebih tinggi daripada pengendali logik. Maklumat ini akan berguna kepada kami untuk menyelesaikan tugasan.

PHP menyokong standard berikut pengendali logik: "DAN" dan "&&" (logik DAN), "ATAU" dan "||" (logik ATAU), "!" (BUKAN logik) dan "XOR" (eksklusif ATAU). Kesemuanya digunakan dalam ungkapan logik untuk menentukan satu atau satu lagi kursus pelaksanaan program bergantung pada hasil yang dikembalikan oleh ungkapan dan berkaitan dengan pengendali binari, kecuali operator "!" , iaitu unary. Apabila menggunakan operator logik, operan mereka ditukar kepada jenis data Boolean (), dan hasilnya bergantung pada nilai logik yang diberikan bagi operan dan jenis operator logik (lihat jadual No. 1).

Jadual No. 1. Pengendali logik

Perbezaan antara pengendali "AND" dan "&&" dan "OR" dan "||" ialah pengendali "AND" , "OR" dan "XOR" mempunyai keutamaan yang lebih rendah, malah lebih rendah daripada pengendali tugasan (lihat jadual operator PHP).

Adalah penting untuk memahami cara jurubahasa memproses ungkapan Boolean. Jika dalam ungkapan dengan operator "||" operan pertama (kiri) akan mempunyai nilai true atau dalam ungkapan dengan operator "&&" operan pertama akan mempunyai nilai false , kemudian operan kedua (kanan) tidak akan dikira lagi. Ini disebabkan oleh fakta bahawa keputusan akhir dalam kes sedemikian tidak akan berubah (lihat jadual No. 1), dan oleh itu tidak perlu menghabiskan masa memproses kod operan kedua. Walau bagaimanapun, anda perlu berhati-hati untuk tidak meletakkan kod dalam operan yang betul di mana pengendalian program yang betul mungkin bergantung.

Penggunaan operator logik ditunjukkan dalam contoh No. 2.

palsu $a=0||palsu; //Sekarang $a==benar, kerana 5->benar dan 8->benar $a=5& //Sekarang $a==salah, kerana "0"->salah $a="0"& //Sekarang $a==benar $a=!palsu; //Sekarang $a==salah, kerana 5->benar $a=!5; /* Fungsi foo() tidak akan dipanggil kerana shunt */ $a=(false&&foo()); $b=(benar||foo()); $c=(false dan foo()); $d=(true atau foo()); /* Perbezaan "||" daripada "atau" dan "&&" daripada "dan" */ //Bertindak seperti ($a=(false||true)) $a=false||true; //Bertindak seperti (($a=salah) atau benar) $a=salah atau benar; //Bertindak seperti ($a=(salah&&benar)) $a=salah& //Bertindak seperti (($a=salah) dan benar) $a=salah dan benar; //Sekarang $a==5, bertindak seperti (($a=5) xor 0) $a=5 xor 0; //Sekarang $a==5, bertindak seperti (($a=5) dan 0) $a=5 dan 0; //Sekarang $a==5, bertindak seperti (($a=5) atau 0) $a=5 atau 0; //Sekarang $a==benar, bertindak seperti ($a=(5||0)) $a=5||0; //Sekarang $a==salah, bertindak seperti ($a=(5&&0)) $a=5& //Sekarang $a==benar, bertindak seperti ($a=(5 xor 6)) $a=(5 xor 6); ?>

Contoh No. 2. Menggunakan Operator Boolean