非数组的数组式访问(true、false、null 等)
Array-style access of non-arrays (true, false, null, etc)
所以,这就是我的数组的结构:
$this->response = [
'code' => null,
'errors' => null,
'data' => null,
];
当我尝试检查是否有任何错误时,我现在会这样做:
if ($response['errors'] !== null) {
// code here
}
这给了我 PHP 7.4 中的通知:
Trying to access array offset on value of type null in /app/src/Form/Form.php on line XX
我明白发生了什么 (backward compatibility changes)。有没有另一种干净的方法来检查数组中的 null
?我看到的唯一工作方法是:
if (isset($response['errors']) && $response['errors'] !== null) {
// code here
}
但这会使我的 if 语句加倍。有没有更简洁的方法?
因为PHP 7.4特别通知通知访问变量的数组项本身是null
:
Trying to access array offset on value of type null
用 PHP 中的 null
初始化任何变量,该变量的行为就像未设置一样:
$a = null;
var_dump(isset($a)); // bool(false)
当你 "initialize" array item with null
同样的事情会发生:
$a['name'] = null;
var_dump(isset($a['name'])); // bool(false)
谨慎使用此检查:
if ($response['errors'] !== null)
因为当 $response['errors']
对于 isset()
是 null
时,它的行为类似于未定义的索引。同时array_keys()
returns键用null
初始化。所以,更简洁的方法是:
- 切勿使用
null
初始化数组项,除非您要删除项。
- 使用
isset($a['name'])
检查数组项。
所以,这就是我的数组的结构:
$this->response = [
'code' => null,
'errors' => null,
'data' => null,
];
当我尝试检查是否有任何错误时,我现在会这样做:
if ($response['errors'] !== null) {
// code here
}
这给了我 PHP 7.4 中的通知:
Trying to access array offset on value of type null in /app/src/Form/Form.php on line XX
我明白发生了什么 (backward compatibility changes)。有没有另一种干净的方法来检查数组中的 null
?我看到的唯一工作方法是:
if (isset($response['errors']) && $response['errors'] !== null) {
// code here
}
但这会使我的 if 语句加倍。有没有更简洁的方法?
因为PHP 7.4特别通知通知访问变量的数组项本身是null
:
Trying to access array offset on value of type null
用 PHP 中的 null
初始化任何变量,该变量的行为就像未设置一样:
$a = null;
var_dump(isset($a)); // bool(false)
当你 "initialize" array item with null
同样的事情会发生:
$a['name'] = null;
var_dump(isset($a['name'])); // bool(false)
谨慎使用此检查:
if ($response['errors'] !== null)
因为当 $response['errors']
对于 isset()
是 null
时,它的行为类似于未定义的索引。同时array_keys()
returns键用null
初始化。所以,更简洁的方法是:
- 切勿使用
null
初始化数组项,除非您要删除项。 - 使用
isset($a['name'])
检查数组项。