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

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的区别

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值