1
msg7086 2015-03-04 16:39:30 +08:00 via iPhone
指针?全等?你知道你在说什么吗…
|
2
haiyang416 2015-03-04 16:51:28 +08:00
使用 「==」 进行比较的时候 PHP 会自动转换类型。
|
3
liuhaotian OP @haiyang416 那是左边的转换还是右边的转换?是左边的字符串被转换为布尔类型true所以等了吗?
@msg7086 在对象之间的关系比较的时候有等于==和全等===,这个比较的时候不是就是考虑到了指针存储地址的不同吗? |
4
b821025551b 2015-03-04 17:13:41 +08:00
'taken'是什么?那个(a)里的a是变量?PHP指针是什么样的?你知道你在说什么吗...
|
5
b821025551b 2015-03-04 17:18:03 +08:00
我感觉你要表达的是这样的
<?php function t() { return 'taken'; } if (t() == true) echo 1; ?> 函数有返回值‘taken’,所以用==判断是成立的;但是返回值类型是字符串,而判断的是bool型的,所以判断不成立 |
6
mhycy 2015-03-04 17:22:07 +08:00
从头到尾没看懂说啥,a是哪来的。。。囧
另外,建议if加花括号,以保证流程按照预定方式运行并提高可读性。 |
7
haiyang416 2015-03-04 17:29:31 +08:00
|
8
wingoo 2015-03-04 17:32:57 +08:00
这程序可吐槽的地方太多了..
你说的问题是类型转换的事, 建议去看看文档 http://php.net/manual/zh/types.comparisons.php |
9
jianghu52 2015-03-04 17:37:51 +08:00
按照楼主的写法写了一个测试页。结果
发现 如果写成 t()=='true' 不会输出 1,只有写成 t()==true 的时候,才会输出 1 我的php是5.4.25 的。 |
10
randyzhao 2015-03-04 17:45:52 +08:00
举个例子
case1: $a = "taken"; case2: $a = ""; case3: $a = null; case4: $a = 0; case5: $a = true; 等: if ($a == ture) { echo "true"; } else { echo "false"; } 那么 case1 输出 "ture"; case2 输出 "false"; case3 输出 "false"; case4 输出 "false"; case5 输出 "ture"; 全等: if ($a === true) { echo "true"; } else { echo "false"; } 那么 case1 输出 "false"; case2 输出 "false"; case3 输出 "false"; case4 输出 "false"; case5 输出 "ture"; 全等 "===" 必须是类型也相符, 才能成立. 而使用 "==" 进行判断时, 变量值为 空 || 0 || null 时, 才是 false. |
11
msg7086 2015-03-04 17:57:16 +08:00 via iPhone
@liuhaotian 槽点太多不舍得吐太多。见楼上别人的解释吧。
反正,全等操作符根本不是你说的意思就对了。 |
12
hiboshi 2015-03-04 22:29:32 +08:00
php是弱类型语言 不强调 类型,单==时 会自动转换 比如 == 的时候1=true 但是 === 的时候 是不等于的
|
14
cevincheung 2015-03-05 10:46:25 +08:00
这类情况,在php中一般都是这么写的
if (t())....... 或者if (t() !== false) ..... 或者if( t() === false)..... |