gpt4 book ai didi

php - 为什么在 bool 类型上转换 bool 返回总是 false

转载 作者:行者123 更新时间:2023-12-05 00:21:01 25 4
gpt4 key购买 nike

我只想知道为什么如果我类型转换 - 使用 (bool) - 表达式的 bool 值 - 例如 2 < 1 — 始终返回 false即使表达式返回 true

举个例子会说得更清楚

<?php
$value = (bool) 2 > 1;
var_dump($value); // bool(false)

$value = (bool) 2 < 1;
var_dump($value); // bool(false)

var_dump((bool)true) // bool(true)

var_dump((bool)false) // bool(false)

最佳答案

问题

强制转换的优先级高于比较运算符。所以在这个表达式中:

$value = (bool) 2 > 1;

在应用 > 运算符之前,(bool) 转换与文字 2 关联。因此,该表达式相当于:

$value = ((bool) 2) > 1;

这相当于:

$value = true > 1;

这在语义上没有意义,但 PHP 允许并转换为整数,以便应用 > 运算符,有效地给出:

$value = 1 > 1;

返回false


解决方案

解决方案是添加括号并转换整个表达式:

$value = (bool)(2 > 1);

即使没有必要,括号也很有帮助,因为它们可以让更随意的读者清楚地了解您的意图,即使是那些可能没有记住运算符优先级表的读者。

关于php - 为什么在 bool 类型上转换 bool 返回总是 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51930127/

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