一个7-8年的PHP程序员写的代码,作为Java出身的我想不懂他为什么这么写

最近有人反应说公司ERP有个报表在选择特殊类别的时候就会报错,显示一个网址。由于PHP程序员离职了,所以由我这个Java出身的人给看看,不看不知道,都不知道当时写程序的人是咋想的,7-8年的PHP。

上代码:

/**
 * @param array $arr
 * @param string $key
 * 把数组中的某一个值当键重新组装成数组返回
 */
function arr_val_key($arr = array(),$key=""){
    if(empty($arr)||empty($key))
        return false;
    $farr = array();
    foreach($arr as $v){
        $zhi = isset($v[$key])?$v[$key]:0;
        if(!empty($zhi))
            $farr[$zhi] = $v;
    }
    return $farr;
}

//这一行是要用上面这个方法的地方
$onelist = arr_val_key($onelist,'goodscode');//三日
foreach ($onelist as $k=>$v) {//这里要循环数组了,如果onelist得到的值是 false会怎样。
    //.....
}

这是原装的代码,虽然咱不是干PHP的,但是简单看看还是能看懂的,小伙伴们发现什么问题了吗?

这个段代码很明显是想  返回一个 数组(当时我问过那个PHP,说PHP没有数组的概念,哎呀我去。

但是代码的第三行 写的  return false; 这是什么鬼,作为一个Java人,真是没搞懂啊,难道 这个也是数组?

如果 传入的 $arr是个数组还好,如果不是返回一个 false 这让接收这个返回数据的兄弟怎么想?

我要一个数组,你给我个 false 这也是数组? 不过这里也印证了之前聊天说的  PHP没有数组的概念,唉。

解决办法:

1.调用arr_val_key();这个方法之前判断要传入的参数是不是空的,如果是空的就别调用这个方法了。

2.由于PHP的非强制类型,定义一个变量接收这个方法的返回值,如果是 false这种情况单独处理。

3.既然说了要返回数组,那你给我数组啊,空数组也是数组,最起码数据类型对等。

//简单修改一下原作者的代码。
function arr_val_key_($arr = array(),$key=""){
        $farr = array();//这里是重点,一开始我就定义好要返回的数据是数组
        if(empty($arr)||empty($key))//如果传入数组为空的 直接返回定义的数组
            return $farr;

        foreach($arr as $v){
            $zhi = isset($v[$key])?$v[$key]:0;
            if(!empty($zhi))
                $farr[$zhi] = $v;
        }
        return $farr;
    }

结束语:

写程序的同行们,无论你用的是强类型语言还是弱类型语言,一定要代码写规范了,这样可以避免很多不必要的麻烦。建议使用弱类型语言的同行们,有空可以看看强类型语言的写法。一定会受益匪浅的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值