Pengendali perhubungan dan logik. Operator Perbandingan dalam PHP

Bab ini menerangkan pengendali perbandingan. Pengendali ini menguji kesamaan (seperti sama dengan, kurang daripada, sama sama dengan, dsb.) antara dua nilai dan mengembalikan benar atau salah bergantung pada cara operan berkaitan. Pengendali perbandingan sentiasa mengembalikan nilai Boolean, dan nilai ini paling kerap digunakan dalam pernyataan seperti , sementara atau untuk mengawal aliran pelaksanaan program.

Operator Perbandingan
ContohNamaHasilnya
$i == $ysamaBENAR jika $i sama dengan $y selepas penukaran jenis data.
$i === $ySecara identikBENAR jika $i sama dengan $y dan mempunyai jenis data yang sama.
$i != $yTidak sama
$i<>$yTidak samaBENAR jika $i tidak sama dengan $y selepas penukaran jenis data.
$i !== $yTidak serupaBENAR jika $i tidak sama dengan $y atau ia adalah daripada jenis yang berbeza.
$i< $y KurangBENAR jika $i adalah kurang daripada $y.
$i > $yLagiBENAR jika $i lebih besar daripada $y.
$i<= $y Kurang atau samaBENAR jika $i kurang daripada atau sama dengan $y.
$i >= $yLebih atau samaBENAR jika $i lebih besar daripada atau sama dengan $y.

Nota: Jika anda cuba memaparkan hasil operasi perbandingan pada skrin, benar akan dipaparkan dalam tetingkap penyemak imbas sebagai 1. Nilai palsu sepadan dengan nombor 0 dan tidak dipaparkan pada skrin (pada dasarnya, anda harus mengingati ini dari keterangan taip boolean). Jika anda ingin melihat hasilnya sebagai benar atau salah, gunakan fungsi var_dump().

Ia juga perlu diperhatikan: jika rentetan dengan nombor atau dua rentetan yang mengandungi nombor dibandingkan, setiap rentetan akan ditukar kepada nombor dan ia akan dibandingkan sebagai nombor.

Operator == (persamaan)

Operator == (kesamaan) menerima apa-apa jenis operan; jika kedua-dua operan adalah sama, ia mengembalikan benar, jika tidak ia mengembalikan palsu.

Jika operan adalah jenis data yang berbeza, PHP akan cuba menukarnya kepada jenis data yang sama sebelum membandingkannya, contohnya ungkapan "4" == 4 akan kembali benar kerana PHP secara automatik akan menghantar nilai yang dibandingkan dengan jenis data yang sama. Begitu juga, ungkapan $a == 1 akan kembali benar jika pembolehubah $a mengandungi nilai 1. Jika anda ingin mengelakkan penukaran jenis tersirat semasa membandingkan, anda harus menggunakan pengendali identiti, yang akan dibincangkan kemudian.

Operator === (identiti)

Operator === (identiti) menerima sebarang jenis operan dan mengembalikan benar jika nilainya adalah sama (sama) dan palsu jika ia berbeza. Bagaimanakah ia berbeza daripada pengendali kesaksamaan? Pengendali identiti menguji dua operan untuk "identiti" berdasarkan definisi ketat padanan, bermakna selain nilai operan itu sendiri adalah sama, ia juga mestilah daripada jenis data yang sama. Sebagai contoh, pertimbangkan ungkapan seperti 5 === "5" , hasil ungkapan ini akan menjadi palsu kerana nilai di sebelah kiri ialah nombor dan nilai di sebelah kanan ialah rentetan, iaitu nilai ini ​mempunyai jenis data yang berbeza. Ingat bahawa operator == dan === bermaksud "sama dengan" dan "sama/sama sama".

Operator != atau<>(ketaksamaan)

Operator ketidaksamaan mempunyai dua jenis: != dan<>. Ia adalah bertentangan dengan pengendali == dan mengembalikan benar jika operan tidak sama. Operator ketidaksamaan mengembalikan palsu hanya jika nilai pada kedua-dua belahnya adalah sama antara satu sama lain.

$var2); // return false var_dump("Home"<>"rumah"); // return true ?>

Operator !== (bukan identiti)

Operator !== (bukan identiti) melakukan tindakan yang bertentangan dengan operator ===. Ia kembali benar jika nilai operan tidak sama antara satu sama lain atau bukan daripada jenis data yang sama. Sebagai contoh, pertimbangkan ungkapan berikut: 7 !== "7" , pengendali "bukan identiti" akan kembali benar kerana nilai di sebelah kiri ialah nombor dan nilai di sebelah kanan ialah rentetan, bermakna ia merujuk kepada jenis yang berbeza data. Dari sini, mudah untuk diingat bahawa pengendali != dan !== bermaksud "tidak sama" dan "tidak sama/sama tidak sama."

Operator > (lagi)

Apabila menggunakan pengendali > (lebih besar daripada), perbandingan akan kembali benar hanya jika nilai di sebelah kiri pengendali lebih besar daripada nilai di sebelah kanannya. Seperti operator lain, operator > berfungsi bukan sahaja dengan nilai berangka, tetapi juga dengan rentetan. Tetapi bagaimana satu baris boleh lebih besar daripada yang lain?

Apabila bekerja dengan rentetan, huruf masuk huruf kecil lebih banyak surat V huruf besar. Apabila membandingkan Rentetan PHP mula-mula menyemak huruf pertama rentetan untuk ketidakpadanan. Jika tiada perbezaan ditemui, ia bergerak ke aksara seterusnya, dan seterusnya, sehingga perbezaan ditemui atau penghujung baris dicapai. Jika dua nilai pada kedua-dua belah operator > adalah sama, operator juga akan mengembalikan false .

3); // return true var_dump("Hai" > "hai"); // return false var_dump(1 > 1); // return false ?>

Operator< (меньше)

Operator< (меньше ) является функциональной противоположностью оператора «больше». Он возвращает true , когда значение слева от него kurang daripada nilai terletak di sebelah kanan, dan palsu jika nilai operan kiri lebih besar daripada operan kanan atau nilainya sama.

Operator >= (lebih besar daripada atau sama dengan)

Operator >= ( lebih atau sama) berbeza sedikit daripada pengendali perbandingan yang dibincangkan sebelum ini. Ia menambah keupayaan untuk dua nilai di kedua-dua belahnya menjadi sama, iaitu, untuk benar dikembalikan, nilai di sebelah kiri pengendali mestilah lebih besar daripada atau sama dengan nilai di sebelah kanannya. Lebih besar daripada atau sama dengan pengendali mengembalikan palsu hanya jika nilai di sebelah kirinya kurang daripada nilai di sebelah kanan.

= 5); // return true var_dump("hai" >= "hai"); // return true var_dump(1 >= 2); // return false ?>

Operator<= (kurang atau sama)

Operator<= (меньше или равно) похож на оператор «больше или равно». Чтобы оператор <= вернул true , значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false , только если значение слева от него больше, чем значение справа.

Oleh kerana dalam artikel sebelumnya saya menggunakan operasi logik untuk kali pertama, saya akan memberitahu anda apa itu, berapa banyak yang ada dan cara menggunakannya.

Terdapat tiga operasi logik dalam C++:

  1. Operasi logik DAN && sudah diketahui oleh kami;
  2. Logik ATAU operasi || ;
  3. Operasi logik BUKAN ! atau penafian logik.

Operasi logik membentuk keadaan kompleks (komposit) daripada beberapa keadaan mudah (dua atau lebih). Operasi ini memudahkan struktur kod program beberapa kali. Ya, anda boleh melakukannya tanpa mereka, tetapi kemudian bilangan ifs meningkat beberapa kali, bergantung pada keadaan. Jadual berikut menerangkan secara ringkas semua operasi logik dalam bahasa pengaturcaraan C++ untuk membina keadaan logik.

Sekarang anda harus memahami perbezaan antara operasi logik DAN dan operasi ATAU logik supaya tidak dikelirukan pada masa hadapan. Sudah tiba masanya untuk berkenalan dengan jenis data bool–logik. Jenis data ini boleh mengambil dua nilai: benar dan salah. Keadaan yang diuji dalam penyata pilih mempunyai jenis data bool. Mari kita pertimbangkan prinsip kerja program berikut, dan semuanya akan jelas dengan semua operasi logik ini.

// or_and_not.cpp: Mentakrifkan titik masuk untuk aplikasi konsol. #include "stdafx.h" #include menggunakan ruang nama std; int main(int argc, char* argv) ( bool a1 = benar, a2 = palsu; // pengisytiharan pembolehubah boolean bool a3 = benar, a4 = palsu; cout<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

Baris 9 dan 10harus jelas kepada anda, kerana pembolehubah jenis dimulakan di sini bool . Selain itu, setiap pembolehubah diberikan nilai betul atau salah . Bermula dengan baris ke-9 dan berakhir ke-20, menunjukkan penggunaan operasi logik. Hasil program (lihat Rajah 1).

Tablica istinnosti log operacii && true && false: 0 false && true: 0 true && true: 1 false && false: 0 Tablica istinnosti log operacii || benar || palsu: 1 palsu || benar: 1 benar || benar: 1 palsu || palsu: 0 Tablica istinnosti log operacii ! !true: 0 !false: 1 Untuk meneruskan, tekan sebarang kekunci. . .

Rajah 1 - operasi logik C++

Anda mungkin mempunyai soalan, "Apakah sifar dan satu ini?" Jika ada soalan, maka ia perlu dijawab. Saya menjawab: "Sifar ialah perwakilan nilai logik palsu, dan satu adalah nilai logik benar." Biar saya terangkan secara ringkas beberapa perkara. Keadaan komposit menggunakan boolean DAN adalah benar hanya jika kedua-dua syarat utama adalah benar. Dalam semua kes lain, syarat kompaun adalah palsu. Keadaan kompaun menggunakan logik ATAU adalah palsu hanya jika kedua-dua syarat mudah adalah palsu. Dalam semua kes lain, syarat kompaun adalah benar. Penafian logik TIDAK ialah operator unary, dan ia tidak menggabungkan dua syarat, tidak seperti operator logik DAN Dan ATAU, yang merupakan operasi binari. Penafian logik membolehkan anda membalikkan maksud keadaan, yang dalam beberapa kes sangat mudah. Keadaan dengan penolakan logik adalah benar jika keadaan yang sama adalah palsu tanpa penolakan, dan begitu juga sebaliknya.


Perkara utama dalam tindakan pengendali ini adalah syarat. jika diterjemahkan daripada bahasa Inggeris bermaksud Jika. Syarat diterima sebagai hujah (apa yang ada dalam kurungan). Keadaan boleh menjadi ungkapan logik atau pembolehubah logik. Ringkasnya, maksud ungkapan itu adalah ini:

Jika (syarat)(
syarat dipenuhi, lakukan ini
}
lain
{
syarat tidak dipenuhi, lakukan secara berbeza
}
Saya harap logik operasi bersyarat adalah jelas. Sekarang mari kita lihat contoh.

$a = 5;
$b = 25;

// Sekarang perhatian! Keadaan: Jika $b lebih besar daripada $a
// Tanda > dan< , как и в математике, обозначают больше и меньше
jika($b > $a)
{
// jika syarat dipenuhi, maka lakukan tindakan ini
echo "$b lebih besar daripada $a";
}
lain
{
// jika tidak dilaksanakan, maka ini
echo "$a lebih besar daripada atau sama dengan $b";
}
?>
Demonstrasi Muat turun sumber
Akibatnya, skrip akan dikeluarkan 25 lebih daripada 5. Contohnya agak mudah. Saya harap semuanya jelas. Sekarang saya mencadangkan untuk mempertimbangkan situasi yang lebih rumit, di mana beberapa syarat mesti dipenuhi. Setiap syarat baharu akan mengandungi selepas syarat utama jika()- bantu, yang ditulis sebagai lain jika(). Akhirnya ia akan menjadi seperti biasa lain.

Tugasan: Ujian dijalankan di sekolah. Skrip perlu mengira markah, mengetahui syarat untuk mendapatkan setiap gred dan markah pelajar itu sendiri. Mari lihat cara menulis ini, dan jangan lupa membaca ulasan.

$ujian = 82; // katakan seorang pelajar menulis ujian dengan 82 mata

// tulis syarat pertama untuk lima
if($test > 90)
{
// jika syarat dipenuhi, maka lakukan tindakan ini.
echo "Penilaian 5";
}
// Tanda && bermaksud "dan, kesatuan", bahawa syarat dipenuhi jika kedua-duanya benar
// iaitu, skor kurang daripada 91 dan lebih daripada 80, kemudian 4. Jika tidak, syarat dibaca lebih lanjut
lain jika ($test< 91 && $test > 80)
{
echo "Penilaian 4";
}
lain jika ($test< 81 && $test > 70)
{
echo "Penilaian 3";
}
lain
{
echo "Kita harus menulis ujian sekali lagi...";
}
?>
Demonstrasi Muat turun sumber
Pelajar kami yang mempunyai masa untuk berehat dan menulis ujian biasa menerima penilaian 4! Saya harap prinsip operasi adalah jelas.

Anda juga boleh merakam secara ringkas operasi operasi bersyarat, apabila anda memerlukan tindakan hanya jika syarat itu dipenuhi.

$umur = 19; // berubah mengikut umur

Jika ($umur > 17)(
echo "Itu sahaja! Saya boleh melakukan apa sahaja yang saya mahu! Saya sudah $umur!";
}
Contoh yang cukup bagus nota ringkas operasi bersyarat. lain tidak perlu menulis.

Operator Perbandingan dalam PHP

Prinsip pengendalian operasi bersyarat adalah jelas. Tetapi, seperti yang anda faham, terdapat banyak lagi cara untuk membandingkan. Mari lihat jadual di bawah dengan pengendali perbandingan.

Contoh Keputusan Nama
$a == $b Sama dengan Benar jika $a sama dengan $b
$a === $b Sama dengan Benar jika $a sama dengan $b dan kedua-dua pembolehubah adalah daripada jenis yang sama
$a != $b Tidak sama dengan Benar jika $a tidak sama dengan $b
$a === $b Tidak sama dengan Benar jika $a tidak sama dengan $b dan kedua-dua jenis tidak sama
$a > $b Lebih Besar daripada Benar jika $a lebih besar daripada $b
$a< $b Меньше чем True, если $a меньше, чем $b
$a >= $b Lebih besar daripada atau sama dengan Benar jika $a lebih besar daripada atau sama dengan $b
$a<= $b Меньше или равно True, если $a меньше или равно $b
Sekarang mari kita lihat pengendali dengan contoh:

// bertentangan dengan tabiat = bermaksud memberikan nilai kepada pembolehubah, dan == adalah sama
jika ($a == 5)(
echo "$a ialah 5"; // akan mencetak "5 sama dengan 5"
) lain (
echo "$a tidak sama dengan 5";
}

Jika ($a != 6)(
echo "$a tidak sama dengan 6"; // akan mencetak "5 tidak sama dengan 6". Perlu sekiranya berlaku penafian
) lain (
echo "$a entah bagaimana sama dengan 6";
}

// dengan semakin kurang saya rasa semuanya jelas. Oleh itu contoh adalah lebih rumit
jika ($a<= 6){
echo "$a kurang daripada atau sama dengan 6"; // akan mencetak "5 adalah kurang daripada atau sama dengan 6"
) lain (
echo "$a lebih besar daripada 6";
}

Operator Logik PHP

Ada kalanya anda perlu membandingkan bukan satu pembolehubah, tetapi dua atau lebih sekaligus dalam satu keadaan. Untuk ini ada pengendali logik .

Contoh Keputusan Nama
$a dan $b Logik "dan" BENAR jika kedua-dua $a dan $b adalah BENAR.
$a atau $b Logik "atau" BENAR jika sama ada $a atau $b adalah BENAR.
$a xor $b Eksklusif "atau" BENAR jika $a atau $b adalah BENAR, tetapi bukan kedua-duanya.
! $a Penafian BENAR jika $a tidak BENAR.
$a && $b Logik "dan" BENAR jika kedua-dua $a dan $b adalah BENAR.
$a || $b Boolean "atau" TRUE jika sama ada $a atau $b adalah BENAR.
Kami telah pun menyedarinya untuk operasi Dan Dan atau adakah terdapat pengendali tambahan? Ini dilakukan untuk mengutamakan operasi perbandingan yang kompleks. Dalam jadual, operator logik disenaraikan mengikut keutamaan: daripada yang paling kecil kepada yang paling besar, iaitu, sebagai contoh, || mempunyai keutamaan yang lebih tinggi daripada atau.

Jom teruskan kepada contoh

$a = 5;
$b = 6;
$c = 7;

// syarat: Jika 5 tidak sama dengan 6 (BENAR) DAN 6 tidak sama dengan 7 (BENAR)
jika ($a< 6 && $b != $c){
echo "Memang begitu!"; // akan mencetak "Memang begitu!" kerana KEDUA-DUA syarat adalah BENAR
) lain (
echo "Salah satu syarat adalah tidak benar";
}

// syarat: Jika 6 tidak sama dengan 6 (SALAH) ATAU 6 tidak sama dengan 7 (BENAR)
jika ($b != 6 || $b != $c)(
echo "Itu sahaja!"; // akan memaparkan "Itu sahaja!", kerana sekurang-kurangnya SATU syarat adalah BENAR
) lain (
echo "Kedua-dua syarat adalah palsu";
}

Operator ternary

Saya cadangkan anda kembali kepada isu kod ternary nanti. Saya tidak dapat mengelak daripada menyebutnya, kerana ia merupakan reka bentuk penting yang mengurangkan saiz kod dengan ketara. Saya cadangkan anda melihat kod dengan segera.

Intipati kod:(syarat) ? nilai a jika benar: nilai a jika salah

Oleh itu, kami memendekkan pernyataan if. Walau bagaimanapun, operasi ini hanya sah apabila memberikan nilai kepada pembolehubah. Sekarang mari kita lihat contoh selesai.

// Contoh penggunaan operator ternary
$settings = (kosong ($_POST["tetapan"])) ? "Lalai" : $_POST["tetapan"];

// Kod di atas adalah serupa dengan blok berikut menggunakan if/else
jika (kosong ($_POST["tetapan"])) (
$settings = "Lalai"; // Jika tiada apa yang dipindahkan, maka biarkan ia sebagai "Lalai"
) lain (
$tetapan = $_POST["tetapan"]; // Jika lulus, maka $settings diberikan nilai lulus.
}
?>
Baca komen kepada kod dan semuanya harus jelas.

Terima kasih kerana memberi perhatian!