gpt4 book ai didi

php - 解构数组时避免 PHP 通知

转载 作者:可可西里 更新时间:2023-11-01 12:53:02 26 4
gpt4 key购买 nike

假设我们有以下数组:

$ourArray = [
'a' => 'a',
'b' => 'b',
];

然后我们尝试获取键 'c' 的值(它不存在):

$someValue = $ourArray['c'] ?? null;

因此,前面的语句不会引发任何通知,因为它只是 isset 的语法糖。更多信息请访问PHP site .

在 PHP7.1 中被引入 symmetric array destructuring ,所以这个想法是解构数组以避免通知,例如:

[
'c' => $someValue
] = $ourArray;

所以这将抛出 Undefined index: c in $ourArray ...

那么,有没有办法避免 PHP 使用对称数组解构抛出通知?并且不使用 error_reportingini_set 等函数。

最佳答案

@解决方案

您可以使用@ 运算符。
https://secure.php.net/manual/en/language.operators.errorcontrol.php

@[
'c' => $someValue
] = $ourArray;

免责声明
这个运算符是有争议的。它可能会隐藏来自函数调用的有用错误消息。即使成本很高,许多程序员也会避免使用它。不过对于作业来说,这是安全的。

默认解决方案

基于 h2ooooooo 的评论。

如果您可以并且想要定义所有默认值,您可以使用下面的代码。

[
'c' => $someValue
] = $ourArray + $defaults;

运算符 + 很重要。 array_merge 函数不会保留数字键。

$defaults 的定义可能如下所示。您必须为每个可能的键定义值。

$defaults = [
'a' => null,
'b' => null,
'c' => null,
'd' => null,
'e' => null,
'f' => null,
];

# or

$defaults = array_fill_keys(
['a', 'b', 'c', 'd', 'e', 'f'],
null
);

关于php - 解构数组时避免 PHP 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48826625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com