总结PHP出现警告的代码

1)foreach一个字符串或NULL时,出现警告,自动跳过foreach代码段,应该为数组或对象。

if( ! is_array($v) ){ $v = [$v]; } 或 if( ! is_array($v) && ! is_object($v)){ $v = [$v]; }

2)count一个NULL或字符串或对象时,出现警告,并且返回0,应该为数组。

$n = is_countable($v) ? count($v) : 0;

3)访问了对象不存在的属性时,出现警告,并且返回null。

<?php

$obj = new stdClass();
$obj->val = 'This is a value.';
$val = !$obj || !property_exists($obj, 'val') || $obj->val; //错误的写法
var_dump($val); //true

if($obj && property_exists($obj, 'val')){ //正确的写法
  $val = $obj->val;
} else{
  $val = null;
}
var_dump($val); //'This is a value.'


$val = $obj && property_exists($obj, 'val') ? $obj->val : null; //正确的写法

4)访问了数组不存在的索引下标时,出现警告,并且返回null。

$v = isset($arr[$i]) ? $arr[$i] : null;

$v = $arr[$i] ?? null;

5)访问对象属性时,对象为NULL,出现警告,并且返回null。

$obj = new stdClass();
$val = $obj && property_exists($obj, 'val') ? $obj->val : null; //正确的写法

6)where_in数组过大时,如$this->db->where_in('location_id',$location_ids);
   会出现警告:preg_match(): Compilation failed: regular expression is too large at offset 37532

$location_ids_chunk = array_chunk($location_ids,25);
$this->db->group_start();
foreach($location_ids_chunk as $location_ids_arr)
{
    $this->db->or_where_in('location_id',$location_ids_arr);
}
$this->db->group_end();


    

7) 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值