comparaison de chaînes php
typecho
typecho 2017-06-16 09:18:38
0
4
991

J'ai rencontré un piège lors de l'utilisation de PHP pour la comparaison de chaînes, comme indiqué dans le code :

    <?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
    ?>

Le premier résultat obtenu est vrai, tandis que le second est faux. Après avoir parcouru les documents officiels, si le premier est forcé d'être converti en 0, alors le deuxième devrait être forcé d'être converti en 134, mais s'il est converti en 134, le troisième devrait être correct.
J'ai imprimé deux chaînes, et le résultat était très étrange, je n'ai pas pu le comprendre après avoir lu les documents officiels. S'il vous plaît, donnez-moi quelques conseils !

typecho
typecho

Following the voice in heart.

répondre à tous(4)
左手右手慢动作

http://www.php.net/manual/zh/...

var_dump('0134b40fsbi94u8'=='134'); //false est comparatif

Comme ce sont toutes des chaînes, nous comparons d'abord le premier chiffre. Le résultat de la comparaison du premier chiffre est une comparaison entre 0 et 1, donc c'est faux

.
字符串与整形比较的话是转换类型,
字符串与字符串比较就是逐个比较
但是他们是从首位开始比较的,
也就是说 首位假如可以比较大小,就不再往下转换,不能比较的继续往下转换。能比较然后就不再往下比较
不能比较就往下接着看!
运行下下面这几个例子 你就明白了
var_dump('0134b40fsbi94u8'=='134')
var_dump('0134b40fsbi94u8'==134)
var_dump('134b40fsbi94u8'==134)
var_dump('134b40fsbi94u8'=='134')

另外 字符串之间的不建议使用比较运算符直接去比较大小,要是在需要比较php也提供了一些字符的比较函数

学习ing

Pour comparer différents types de données, il est préférable d'utiliser les opérateurs congruents === et incongrus !==
Parce que les opérateurs de comparaison congruents === et incongruents !== vérifieront le type :

$a === $b 表示:如果$a等于$b,并且它们的类型也相同时,返回true.
$a !== $b 表示:如果$a不等于$b,或者它们的类型不同时,返回true.
if(false !== 0) echo time(); //输出时间戳
if(false !=  0) echo time(); //没有输出

En un mot, lorsque vous comparez, essayez d'utiliser === et!== au lieu de == et!=.

De plus, PHP fournit également une série de fonctions de vérification de type :

is_int/is_float/is_numeric/is_string/is_bool/is_null
is_array/is_object/instanceof/is_resource/is_callable

Certaines fonctions fournissent également des paramètres de vérification de type auxquels il faut prêter attention, tels que :

in_array('value', $arr, true)
array_search('value', $arr, true)
array_keys($arr, 'value', true)

Si la valeur du troisième paramètre est vraie, la fonction vérifiera également si les types sont les mêmes.

De plus, PHP prend également en charge les opérateurs de comparaison ==,!=,===,!== pour comparer si deux tableaux ou deux objets sont égaux.

// 输出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 prend également en charge les opérateurs de comparaison (==,!=,===,!==) pour déterminer si deux objets sont égaux :

class Foo {}
$foo1 = new Foo();
$foo2 = new Foo();
var_export($foo1 ==  $foo2); // true
var_export($foo1 === $foo2); // false (因为引用不同)
仅有的幸福

Votre première chaîne est exactement conforme à la notation scientifique.
Pour les langues avec des restrictions de type lâches, il y a souvent de tels pièges dans l'actualité.

Essayez d'utiliser des chèques strictement dactylographiés

習慣沉默

Pour les langages faiblement typés comme php, vous pouvez utiliser ===就别用==

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal