gpt4 book ai didi

PHP 类型转换混淆

转载 作者:行者123 更新时间:2023-12-04 05:46:45 24 4
gpt4 key购买 nike

我有以下代码:

<?php
$val = 0;
$res = $val == 'true';

var_dump($res);
?>

我一直认为 $res 应该是 'false',因为在上面的表达式中 PHP 会尝试将 $val 类型转换为 bool 类型(其中零将被转换为 false)和一个字符串(非空字符串为 true)。但是如果我执行上面的代码,输出将是:
boolean true

我错过了什么吗?谢谢。

最佳答案

在 PHP 中,所有非空、非数字字符串的计算结果为零,因此 0 == 'true'是真的,但是 0 === 'true'是假的。字符串 true尚未转换为 bool 值,而是作为字符串与零进行比较。零保留为 int 值,而不是转换为 bool 值。所以最终你会得到:

// string 'true' casts to int 0
0 == 0 // true

尝试这个:
echo intval('true');
// 0
echo intval('some arbitrary non-numeric string');
// 0

评论 the PHP type comparisons table .通常,在 PHP 中进行 bool 比较时,类型不相同(在这种情况下是 int 到 string),使用严格比较是有值(value)的。

关于PHP 类型转换混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com