工作後才知道的後端30件小事
可以先思考一下以下的输出的什麽?
<?php
$arr = [
null,
0,
1,
2,
3,
'',
[],
[1, 2, 3]
];
foreach ($arr as $value) {
switch ($value) {
case null:
dump('this is null');
break;
case 0:
dump('this is 0');
break;
case 1:
dump('this is 1');
break;
case 2:
dump('this is 2');
break;
case 3:
dump('this is 3');
break;
case '':
dump('this is empty string');
break;
case []:
dump('this is []');
break;
case [1, 2, 3]:
dump('this is [1, 2, 3]');
break;
}
}
输出:
"this is null"
"this is null"
"this is 1"
"this is 2"
"this is 3"
"this is null"
"this is null"
"this is [1, 2, 3]"
可以发现居然有 4 个 null!原因是什麽呢?
因为 switch 是 loose comparison,也就是==
,而非===
。
所以到第一个 case 时,$value == null
为真时就会进去;而在 PHP,null
、0
、''
、[]
跟null
都为真,跟empty()
有点像。
loose comparison 的相反是 strict comparsion
答案是不行,但有一些 tricky 的做法。
in_array()
预设也是 loose comparsion,但可以透过输入参数去让他做 strict comparsion!
// loose comparsion
in_array($value, $arr);
// strict comparsion
in_array($value, $arr, true);
<<: 30天零负担轻松学会制作APP介面及设计【DAY 03】
以下笔记摘录自『 The Go Workshop 』。 值的储存 Go语言采用了一个简单的记忆体管理...
为了方便检视这边我挑了6种颜色帮表格上色 cursor = conn.cursor() cursor...
延续昨天的介绍 我们已经处理、介绍过的栏位有:PassengerId、Survived、Name、P...
在第一个 API 中我们编写的 View,不知道大家有没有觉得非常简洁呢,好像没有写什麽代码,但是就...
reset 回推 使用Git的一大好处就是,当我的程序在改动的过程中发生了难以修复的错误,我们可以透...