php 优雅的方式来重构list()的“未定义数组键”警告[重复]

w8f9ii69  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(261)

此问题已在此处有答案

PHP: undefined offset in explode()(5个答案)
2天前关闭。
从PHP 8开始,以下代码会触发“Undefined array key ...”警告:

list($a, $b) = explode(',', 'foo');
if(!$b) {
  // ...
}

我知道我可以重构这个。。

$arr = explode(',', 'foo');
$a = $arr[0] ?? null;
$b = $arr[1] ?? null;
if(!$b) {
  // ...
}

……但我觉得还有更优雅的方式。有吗?

lbsnaicq

lbsnaicq1#

为什么不简单地说:

$arr = explode(',', 'foo');
if(empty($arr[1])) {
  // ...
}

(复制您当前的逻辑)。
但是,如果你想更严格,你可以使用这个:

$arr = explode(',', 'foo');
if(!array_key_exists(1, $arr)) {
  // ...
}

如果您希望继续使用list以及变量$a$b,则可以使用

list($a, $b) = array_pad(explode(',', 'foo'), 2, null);
if (!$b) {
  // ...
}

相关问题