Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP?

Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP?

WBOY
WBOYke hadapan
2023-09-07 17:45:081434semak imbas

Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP?

Dalam PHP, double equals (==) dan triple equals (===) ialah pengendali perbandingan yang digunakan untuk membandingkan nilai untuk kesamaan. Walau bagaimanapun, mereka berbeza dalam tingkah laku dan ketegasan proses perbandingan.

Gua ganda bersamaan (==)

Pengendali double equals menyemak kesamaan antara dua nilai, tetapi melakukan paksaan jenis jika kedua-dua nilai mempunyai jenis data yang berbeza. Ini bermakna PHP akan cuba menukar nilai kepada jenis generik sebelum melakukan perbandingan. Berikut ialah beberapa perkara penting tentang pengendali sama dengan berganda:

  • Jika dua nilai mempunyai jenis yang sama, ia berkelakuan seperti operator triple equals (perbandingan ketat).

  • Jika dua nilai mempunyai jenis yang berbeza, PHP akan cuba menukarnya kepada jenis biasa. Sebagai contoh, jika anda membandingkan integer dan rentetan, PHP akan cuba menukar rentetan kepada integer.

  • Rentetan angka ditukarkan kepada nombor secara automatik berbanding nombor bulat atau nombor terapung.

  • Nilai Boolean dibandingkan sebagai integer (benar ialah 1, palsu ialah 0).

  • Null dianggap sama dengan rentetan kosong, tatasusunan kosong atau sifar.

  • Array dan objek dibandingkan bukan dengan kandungannya, tetapi dengan identitinya.

Contoh 1

<?php
$value1 = 5;
$value2 = "5";


if ($value1 == $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

Output

Equal

Arahan

Operator double equals melakukan paksaan jenis, jadi rentetan "5" ditukar kepada integer 5, dan perbandingan itu kembali benar.

Contoh 2

<?php
$value1 = 5;

$value2 = "5.0";

if ($value1 == $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

Output

Equal

Arahan

Pengendali double equals melakukan paksaan jenis. Rentetan "5.0" ditukar kepada titik terapung nombor 5.0, dan perbandingan itu kembali benar.

Tiga tanda sama dengan (===)

Pengendali kesamaan tiga kali ganda, juga dikenali sebagai pengendali identiti, melakukan perbandingan yang ketat antara dua nilai. Ia menyemak nilai dan kesamarataan jenis tanpa melakukan sebarang paksaan jenis. Pengendali triple equals adalah lebih ketat dan secara amnya dianggap lebih selamat untuk digunakan kerana ia mengelakkan penukaran jenis yang tidak dijangka atau tidak dijangka. Berikut ialah beberapa perkara penting tentang pengendali triple equals:

  • Ia kembali benar hanya jika kedua-dua nilai yang dibandingkan mempunyai jenis yang sama dan nilai yang sama.

  • Pengendali mengembalikan palsu jika jenis berbeza, atau jika satu nilai tidak boleh dihantar ke jenis nilai yang lain.

  • Tiada penukaran jenis atau lakonan dilakukan sebelum perbandingan.

  • Ini biasanya diutamakan apabila membandingkan nilai di mana integriti jenis adalah penting.

Contoh 1

<?php
$value1 = 5;
$value2 = "5";

if ($value1 === $value2) {
   echo "Equal";
} 
else {
   echo "Not Equal";
}
?>

Output

Not Equal

Arahan

Pengendali triple equals melakukan perbandingan yang ketat, dengan mengambil kira nilai dan jenis. Memandangkan $value1 ialah integer dan $value2 ialah rentetan, mereka tidak dianggap sama.

Contoh 2

<?php
$value1 = 10;
$value2 = 10;

if ($value1 === $value2) {
   echo "Equal";
} else {
   echo "Not Equal";
}
?>

Output

Equal

Arahan

Memandangkan $value1 dan $value2 kedua-duanya adalah integer dengan nilai 10 yang sama, perbandingan ketat menggunakan === mengembalikan benar dan "Equal" digemakan sebagai output.

Kesimpulan

Dalam PHP, gelagat perbandingan pengendali double equals (==) dan triple equals (===) adalah berbeza. Double equals menguatkuasakan semakan kesaksamaan longgar mengikut jenis, cuba menukar nilai kepada jenis biasa sebelum membandingkan. Sebaliknya, triple equals melakukan semakan kesaksamaan yang ketat tanpa paksaan jenis, dengan mengambil kira nilai dan jenis. Tanda tahap ketiga biasanya digemari kerana kebolehpercayaan dan kebolehramalannya. Ia membantu mengelakkan tingkah laku yang tidak dijangka yang disebabkan oleh penukaran jenis yang tidak disengajakan. Memahami perbezaan ini membolehkan pembangun memilih operator yang sesuai berdasarkan keperluan perbandingan yang diingini dan mengekalkan ketepatan kod.

Atas ialah kandungan terperinci Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:fungsi fscanf() dalam PHPArtikel seterusnya:fungsi fscanf() dalam PHP