这是一种我在上面的回答中没有看到过的技巧:
$val = strval(@$arr["notfound"]); // will not generate errors and
// defaults to an empty string
这对于加载
$_GET
参数非常方便,可以使内容简短易读。此外,您还可以将
strval()
替换为
trim()
……或者如果只接受整数,则可以使用
intval()
。
如果缺少或非数字值,则
intval
的默认值为
0
。如果为空、null或false,则
strval
的默认值为
""
。
$val_str = strval(@$_GET['q']);
$val_int = intval(@$_GET['offset']);
查看演示
现在对于一个数组,你仍然需要循环每个值并设置它。但是在我看来,这非常易读:
$arr = Array (1, 4, "0", "V", null, false, true, 'true', "N");
foreach ($arr as $key=>$value) {
$arr[$key] = strval($value);
}
echo ("['".implode("','", $arr)."']");
这里是结果:
['1','4','0','V','','','1','true','N']
有趣的是,true
变成了 "1",但 'true'
仍然是一个字符串,而 false
变成了一个空字符串 ""
。
现在同样的数据使用 $arr[$key] = intval($value);
产生了如下结果:
['1','4','0','0','0','0','1','0','0']
$array = array_map(fn($v) => $v ?: '', $array);
:D - undefined?:
会将假值替换为空字符串。??
可以用于仅替换空值 - 这仅适用于 PHP7+。 - undefined