4. PHP 数组操作
1.4.1. 向二位数组中添加键值对
// 方法一 $tempArr=array(); foreach($arr as $key => $value){ $value['new_key'] = $value['old_key1']+$value['old_key2']; $tempArr[] = $value; } // 方法二 foreach($arr as $key => $value){ $arr[$key]['new_key'] = $value['old_key1']+$value['old_key2']; }
1.4.2. 判断二维数组是否为空
// 判断一维数组是否为空 echo empty($array_test); //如果数组$array_test 为空那么这个函数返回 true if($array_test){}; //如果数组为空.那么 if 的条件判断为 false echo count($array_test) //计算数组元素个数.为 0 就是空 echo sizeof($array_test) //count() 的别名 用法和返回一样 // 判断二维数组是否为空 function array_is_null($arr = null){ if(is_array($arr)){ foreach($arr as $k=>$v){ if($v&&!is_array($v)){ return false; } $t = self::array_is_null($v); if(!$t){ return false; } } return true; }elseif(!$arr){ return true; }else{ return false; } }
1.4.3. 求数组中各个元素之和
// 用 foreach 实现 $sum = 0; foreach ($ar as $v) { $sum+=$v; } echo $sum; // 用 array_reduce 实现 $result = array_reduce($arr, function leijia($a,$b){ $a+=$b; return $a; }); echo $result; // 将数组$arr 的首个元素弹出,作为初始值,避免 min($result['min'], $item['min']) 中$result 为空。否则最终结果 min 是空的。 $arr = array( array('min' => 1.5456, 'max' => 2.28548, 'volume' => 23.152), array('min' => 1.5457, 'max' => 2.28549, 'volume' => 23.152), array('min' => 1.5458, 'max' => 2.28550, 'volume' => 23.152), array('min' => 1.5459, 'max' => 2.28551, 'volume' => 23.152), array('min' => 1.5460, 'max' => 2.28552, 'volume' => 23.152), ); $initial = array_shift($arr); $t = array_reduce($arr, function($result, $item) { $result['min'] = min($result['min'], $item['min']); $result['max'] = max($result['max'], $item['max']); $result['volume'] += $item['volume']; return $result; }, $initial);
1.4.4. 取出两个数组中相同的内容
$arr1=array("0"=>"17","1"=>"20","2"=>"36","3"=>"48"); $arr2=array("0"=>"17","1"=>"36","3"=>"57"); $arr3=array_intersect($arr1,$arr2); var_dump(array_unique($arr3));
1.4.5. 从数组中找到指定元素的位置
$array=array(2,3,4,1,5); //找到 3 所处的位置 $find=3; //第一种方式 循环解决 此举类似于 for while 等循环 function find_by_foreach($array,$find) { foreach ($array as $key => $v) { if($v==$find) { return $key; } } } //第二种方式 利用数组查找 找到所需要元素的索引位置 function find_by_array_search($array,$find) { return array_search($find,$array); } //第三种方式 键值反转 通过值查找键 function find_by_array_flip($array,$find) { $array=array_flip($array); return $array[$find]; } var_dump(find_by_foreach($array,$find)); var_dump(find_by_array_search($array,$find)); var_dump(find_by_array_flip($array,$find));
1.4.6. 删除数组中指定值的元素的几种方法
// 1. 利用 foreach 和 unset() 函数删除数组中的特定元素 foreach($array as $k=>$v){ if($v == 'day'){ unset($array[$k]): } } // 2. 利用 array_flip() 函数和 unset() 函数删除数组中的特定值 $arr = array_flip($arr); unset($arr['world']); // 3. 利用 array_search() 和 unset() 函数删除数组中的特定值 if(($key = array_search('day',$arr))){ unset($arr[$key]); } // 4. array_splice() 函数可以与 unset() 函数起到相同作用 if(($key = array_search('day',$arr))){ array_splice($arr, $key,1); }
1.4.7. 根据某一个键值合并生成一个新的二维数组
$result= array(); foreach ($infos as $key => $info) { $result[$info['a']][] = $info; } print_r($result);
1.4.8. 无限级树
/** * 生成无限级树算法 * @param array $arr 输入数组 * @param number $pid 根级的 pid * @param string $column_name 列名,id|pid 父 id 的名字|children 子数组的键名 * @return array $ret */ function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') { list($idname, $pidname, $cldname) = explode('|', $column_name); $ret = array(); foreach ($arr as $k => $v) { if ($v[$pidname] == $pid) { $tmp = $arr[$k]; unset($arr[$k]); $tmp[$cldname] = make_tree($arr, $v[$idname], $column_name); $ret[] = $tmp; } } return $ret; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 3. PHP 时间操作
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论