有没有办法在PHP中切换定义的常量值true / false?我试图使true = false和false = true。
我已经尝试了几次尝试,但它似乎不允许我改变:
define("false",1);
define(false,1);
false = true;
最后一个导致PHP内部服务器错误,前两个只是什么都不做。
这些似乎都不起作用。是否在编译的PHP中更深层次定义了true / false,无法重置?
注意:这主要是出于教育目的,并了解如何定义这些值,因为它似乎是“不可触及的”。我并不是想写出亵渎神灵的代码来反过来检查事情。
答案 0 :(得分:3)
你不能这样做,所以你只能写TRUE
而你会得到FALSE。唯一可行的方法是使用constant()
,如果你定义了两个常数,例如
define(FALSE, TRUE);
define(TRUE, FALSE);
var_dump(constant(TRUE));
输出:
bool(false)
答案 1 :(得分:0)
代码效果应该是可预测的,并且因为重新定义TRUE / FALSE将以数百万种方式破坏程序逻辑-我很高兴禁用了这些功能。否则,您最终将编写类似以下的意大利面条式代码:
if ( (customer_bought($product_id) && !inverted(TRUE) && !inverted(FALSE)) || (!customer_bought($product_id) && inverted(TRUE) && inverted(FALSE)) ) { send_invoice($client_id); } else { if ((inverted(TRUE) && !inverted(FALSE)) || (!inverted(TRUE) && inverted(FALSE)) ) { throw new exception('Program is broken - contact developer for assistance'); } }