在php 7中避免' Undefined index '错误的正确方法(NOT NOTICE!!)


Correct way to avoid `Undefined index` error (NOT NOTICE!!) with php 7

我不是在说这个:

如何避免未定义索引

我说的是一个崩溃,致命错误。不是关于"通知"。

EDIT即使这是由通知引起的,结果也是崩溃。我的问题是:如何配置laravel,使其不会在通知时崩溃?

我运行的是laravel 5.3和php 7。

我的错误:

ErrorException in UploadController.php line 149:
Undefined index: AS
我代码:

 if (!PlumConstants::$plum_us_states[$state]) {
        $state = '';
      }

引用常量类:

    class PlumConstants {
    public static $plum_us_states = array(
        'AL' => 'Alabama',
        'AK' => 'Alaska',
        'AZ' => 'Arizona',
        'AR' => 'Arkansas',
        'CA' => 'California',
//        ...
      );
    }

嗯,这有点好笑,不是吗?因为我正在检查条目是否存在

 if (!PlumConstants::$plum_us_states[$pstate]) {

但不知何故,PHP似乎恐慌和崩溃,因为没有一个定义的索引…而这正是我在代码中所做和避免的。有什么方法可以让你停止这种奇怪的行为吗?我可能会用isset(),但我觉得它很丑。因为isset并不意味着它不是空的。做这件事的好方法是什么?

如果你使用的是php7你可以使用

PlumConstants::$plum_us_states[$pstate] ?? false

而不是
!PlumConstants::$plum_us_states[$pstate] 
  1. 好吧,你的例子中没有'AS'键。
  2. 在第一个代码示例中指定了$state变量,在第二个代码示例中指定了$pstate
  3. 尝试检查if (!array_key_exists($pstate, PlumConstants::$plum_us_states)) {