Rumah > Soal Jawab > teks badan
Saya menghadapi masalah apabila menggunakan PHP untuk perbandingan rentetan, seperti yang ditunjukkan dalam kod:
<?php
var_dump('00E73694765433'=='0'); //true
var_dump('0134b40fsbi94u8'=='0'); //false
var_dump('0134b40fsbi94u8'=='134'); //false
echo PHP_EOL;
var_dump(is_numeric('00E73694765433'));//true
var_dump(is_numeric('0134b40fsbi94u8'));//false
?>
Keputusan pertama yang diperoleh adalah benar, manakala yang kedua adalah palsu. Selepas melihat melalui dokumen rasmi, jika yang pertama terpaksa ditukar kepada nombor 0, maka yang kedua perlu dipaksa untuk ditukar kepada 134, tetapi jika ia ditukar kepada 134, yang ketiga harus betul.
Saya mencetak dua rentetan, dan hasilnya sangat pelik. Saya tidak dapat memahaminya selepas membaca dokumen rasmi.
ringa_lee2017-06-16 09:20:38
http://www.php.net/manual/zh/...
var_dump('0134b40fsbi94u8'=='134'); //palsu ialah perbandingan
Disebabkan semuanya rentetan, kita bandingkan digit pertama dahulu Hasil perbandingan digit pertama adalah perbandingan antara 0 dan 1, jadi ia adalah palsu
字符串与整形比较的话是转换类型,
字符串与字符串比较就是逐个比较
但是他们是从首位开始比较的,
也就是说 首位假如可以比较大小,就不再往下转换,不能比较的继续往下转换。能比较然后就不再往下比较
不能比较就往下接着看!
运行下下面这几个例子 你就明白了
var_dump('0134b40fsbi94u8'=='134')
var_dump('0134b40fsbi94u8'==134)
var_dump('134b40fsbi94u8'==134)
var_dump('134b40fsbi94u8'=='134')
另外 字符串之间的不建议使用比较运算符直接去比较大小,要是在需要比较php也提供了一些字符的比较函数
学习ing2017-06-16 09:20:38
Untuk membandingkan jenis data yang berbeza, sebaiknya gunakan operator yang kongruen === dan !== yang kongruen
Oleh kerana pengendali perbandingan yang kongruen === dan yang tidak kongruen !== akan menyemak jenis:
$a === $b 表示:如果$a等于$b,并且它们的类型也相同时,返回true.
$a !== $b 表示:如果$a不等于$b,或者它们的类型不同时,返回true.
if(false !== 0) echo time(); //输出时间戳
if(false != 0) echo time(); //没有输出
Dalam satu perkataan, apabila membandingkan, cuba gunakan === dan!== bukannya == dan!=.
Selain itu, PHP juga menyediakan satu siri fungsi semakan jenis:
is_int/is_float/is_numeric/is_string/is_bool/is_null
is_array/is_object/instanceof/is_resource/is_callable
Sesetengah fungsi juga menyediakan parameter semakan jenis, yang perlu diberi perhatian, seperti:
in_array('value', $arr, true)
array_search('value', $arr, true)
array_keys($arr, 'value', true)
Jika nilai parameter ketiga adalah benar, fungsi juga akan menyemak sama ada jenisnya adalah sama.
Selain itu, PHP juga menyokong pengendali perbandingan ==,!=,===,!== untuk membandingkan sama ada dua tatasusunan atau dua objek adalah sama.
// 输出true,表示存在相同的键值对.
var_export( array('a' => 1, 'b' => '2D') == array('b' => 2, 'a' => 1) );
// 输出false,因为===不仅要求键值对相同,而且要求元素的【顺序】和【类型】也相同.
var_export( array('a' => 1, 'b' => 2) === array('b' => 2, 'a' => 1) );
// 输出false,因为两个数组的键值对是不同的。
var_export( array('a', 'b') == array('b', 'a') );
左边是:
array (
0 => 'a',
1 => 'b',
)
右边是:
array (
0 => 'b',
1 => 'a',
)
PHP juga menyokong pengendali perbandingan (==,!=,===,!==) untuk menentukan sama ada dua objek adalah sama:
class Foo {}
$foo1 = new Foo();
$foo2 = new Foo();
var_export($foo1 == $foo2); // true
var_export($foo1 === $foo2); // false (因为引用不同)
仅有的幸福2017-06-16 09:20:38
Rentetan pertama anda betul-betul menepati notasi saintifik.
Untuk bahasa yang mempunyai sekatan jenis yang longgar, selalunya terdapat perangkap sedemikian dalam berita.
Cuba gunakan cek yang ditaip ketat
習慣沉默2017-06-16 09:20:38
Untuk bahasa yang ditaip lemah seperti php, anda boleh gunakan ===
就别用==