首页 > 代码库 > 一个自定义函数带来的思考
一个自定义函数带来的思考
今天和战五渣老师讨论函数返回值和抛出异常时,我写了一个查找数组中是否具备某些键的函数。我总结的结果是在合适的场景使用抛出异常,通用函数依然是通过返回值来完成他的功能。
不过还有更多的关于编程方面的收获:关于同样一个问题,换一种思考的角度可以写出不同的代码。
<?php //我需要定义一个函数,用来判断给定的数组中是否包含我所需要全部的键 //根据需求,普通的解决思路 function checkKey($array,$key) { if(!is_array($array)) { // not array return false; } $key = explode(‘,‘,$key); foreach($key as $k => $v) { if(!array_key_exists($v,$array)) { //not in array return false; } } return true; } //以下函数式战五渣老师提供的思路 function newCheckKey($array,$key) { if(!is_array($array)) { return false; } $key = explode(‘,‘,$key); $array_keys = array_keys($array); //取出给定数组的所有键 $array_intersect = array_intersect(array_keys($array),$key) ; //计算给定数组所有键与需要检查的键去交集 if($array_intersect === $key) { return true; //如果取得的交集是$key本身,说明$array包含有所有需要的键 } return false; } //一种可读性非常低的写法 function newCheckKey2($array,$key) { if(!is_array($array)) { return false; } $key = explode(‘,‘,$key); return array_intersect(array_keys($array),$key) === $key; } $data = http://www.mamicode.com/[‘zhanwuzha‘=>‘renzhewudi‘,‘bool‘=>‘jintiantuiqunle‘];>
通过对比上面的代码,通过巧妙运用数学中集合的概念可以轻松的完成我想要的功能。通过foreach遍历数组也可以完成我需要的功能。当我们思考的更多一些的时候可能会获得更多的解决思路,可能通过对比改进不同方法就是我们水平提高的过程吧。
另外我上面的第三个函数与第二个函数功能完全相同,但是少定义了两个变量,同时也降低了程序的可读性。当来维护难度会提高。不同的方法之间需要自己在以后的编程中进行取舍^_^
一个自定义函数带来的思考
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。