使用 php 7 避免“未定义索引”错误的正确方法(注意!!)
Correct way to avoid `Undefined index` error (NOT NOTICE!!) with php 7
我不是在说这个:
How to avoid undefined index
我说的是崩溃,致命错误。不是 "notice"。
EDIT 即使这是一个通知引起的,结果也是崩溃。我的问题是:如何配置 laravel,所以它不会在通知时崩溃?
我运行laravel 5.3和php7.
我的错误:
ErrorException in UploadController.php line 149:
Undefined index: AS
我的代码:
if (!PlumConstants::$plum_us_states[$state]) {
$state = '';
}
引用我的常量class:
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
并不意味着它不为 null 或为空。执行此操作的好方法是什么?
如果您使用 php7,您可以使用
PlumConstants::$plum_us_states[$pstate] ?? false
改为
!PlumConstants::$plum_us_states[$pstate]
- 好的,您的示例中没有 'AS' 键。
- 在第一个代码示例中,您指定了 $state 变量,在第二个代码示例中 - $pstate
- 试试看
if (!array_key_exists($pstate, PlumConstants::$plum_us_states)) {
我不是在说这个:
How to avoid undefined index
我说的是崩溃,致命错误。不是 "notice"。
EDIT 即使这是一个通知引起的,结果也是崩溃。我的问题是:如何配置 laravel,所以它不会在通知时崩溃?
我运行laravel 5.3和php7.
我的错误:
ErrorException in UploadController.php line 149:
Undefined index: AS
我的代码:
if (!PlumConstants::$plum_us_states[$state]) {
$state = '';
}
引用我的常量class:
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
并不意味着它不为 null 或为空。执行此操作的好方法是什么?
如果您使用 php7,您可以使用
PlumConstants::$plum_us_states[$pstate] ?? false
改为
!PlumConstants::$plum_us_states[$pstate]
- 好的,您的示例中没有 'AS' 键。
- 在第一个代码示例中,您指定了 $state 变量,在第二个代码示例中 - $pstate
- 试试看
if (!array_key_exists($pstate, PlumConstants::$plum_us_states)) {