php异常中undefined index和Undefined variable的区别和解决方法

433 阅读1分钟

php中有两个常见的异常, Undefined indexUndefined variable, 今天我们就来了解它们的区别和异常解决方案.

php函数中值传递的方式

在php中对于简单数据类型, 也就是number, boolean, string, 它们作为函数参数传值时, 默认是使用值传递

Undefined variable异常的原因

Undefined variable异常就是说变量未定义, 当我们引用一个未定义的变量时就会报该异常.

Undefined variable异常的解决方法

解决方法就是在引用该变量之前使用isset函数进行判断, 下面是该函数的封装

<?php

function getSafeValue(&$var,$default=null){
  return isset($var) ? $var : $default;
}

上面函数有一个点要注意, 就是必须使用引用传递, 也就是&$var, 因为通过值传递会复制一次变量, 假如该变量本身就不存在, 则又会报Undefined variable异常.

Undefined index异常的原因

Undefined index异常: 当我们使用了数组中不存在的key时, 就会报该异常.

Undefined index异常的解决方案

其实和Undefined variable解决方案差不多, 也是在引用前进行一次判断, 下面时该函数的封装.

<?php

function getSafeArrValue(&$arr,$key,$default=null){
  return isset($arr[$key]) ? $arr[$key] : $default;
}

引申阅读

php中函数参数的引用传递和值传递
php中isset, empty, is_null的区别

文章首发于: hedaoshe.com/311.html