<?php /** * 9 数组 each list array_map array_walk array_walk_recursive */ //each() 返回数组中的键名和键值生成新数组,如果指针结束,返回布尔值false /* $array1=array('webname'=>"博客",'weburl'=>"bbs.blog.com"); $array_new=each($array1); //生成新的数组: print_r($array…
申请一个数组,然后不断的跑空循环,看看执行时间 for循环 foreach (不使用键) foreach(使用键) array_map array_walk 查看效率速度发现很明显 是foreach更快,这是为什么呢,我记得韩顺平老师讲过 foreach比for循环快的原因是因为foreach内部用链表存储,所以移动起来更快,而array_map array_walk显然封装过扩展,没有底层快的.当不使用key的时候 foreach要快一倍,也就告诉我们今后用数组如果不需要用到key的时候尽量不…
public static function objectToArray($d) { if (is_object($d)) { $d = get_object_vars($d); } if (is_array($d)) {  //数组中的每个值都通过当前函数处理(如果是多维数组相当于递归),这里都是原样返回(return $d) return array_map(array(__CLASS__, __FUNCTION__), $d); } else { return $d; } } array_…
$config = [ => [], => [], => [] ]; array_map(function($key) use ($config){ print_r($key); die(); }, $config); Array( [title] => 推荐 [code] => 1) 使用map的时候,在匿名函数里面是没有key值的;而walk是同时存在key val两个值的;所以这应该是他们最大的区别吧.   $config = [ 1 => ['title'=&g…
//删除旧有的图片 //新增数组 $arr2=array(); //原有数组 $old_pics = ReportPic::find()->where(['report_id' => $id])->asArray()->all(); $arr1=array_map(function($num){return $num['path'];},$old_pics); $arr1_diff = array_diff($arr1, $arr2); $picc = ReportPic::del…
map    主要是为了得到你的回调函数处理后的新数组,要的是结果. walk   主要是对每个参数都使用一次你的回调函数,要的是处理的过程. walk   可以认为提供额外参数给回调函数,map不可以 walk   主要是要对数组内的每个值进行操作,操作结果影响原来的数组 map    主要是对数组中的值进行操作后返回数组,以得到一个新数组 walk   可以没有返回值 map要有,因为要填充数组…
/** * array_filter 用回调函数处理数组中的各个元素, * 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时, * 如果返回了false,那么这个元素将会被过滤掉.PS:保持了原来的索引. */$arr = array(1,2,3,'aaa'=>4,5); $newArr = array_filter($arr,function($val) { if ($val == 3) { return false; // 返回false 这个元素将要被过滤掉 } return tr…
array_map(function($v){return $v+1;}, $array); array_walk($array, function($v, $k){...}); array_filter($array, function($v){return true;}); 以上三者 相同点 都是利用回调函数对数组中每个元素进行操作. 不同点 返回值,回调函数的参数,是否改变数组的值 三个方面.  array_map 返回的是新数组,即原数组不变.  array_walk 返回的布尔值,如果…
[转]php 之 array_filter.array_walk.array_map的区别 原文:https://blog.csdn.net/csdnzhangyiwei/article/details/60761512. array array_filter ( array $input [, callback $callback ] ) array array_map ( callback $callback , array $arr1 [, array $... ] ) bool arra…
array_walk --- 使自定的函数能处理数组的每个元素 bool array_walk ( array &array, callback funcname [, mixed userdata] ) 如果成功则返回 TRUE,失败则返回 FALSE. 语法 : 将用户自定义函数 funcname 应用到 array 数组中的每个单元.典型情况下 funcname 接受两个参数.array 参数的值作为第一个,键名作为第二个.如果提供了可选参数 userdata,将被作为第三个参数传递给 c…
array_map()函数返回用户自定义函数作用后的数组.回调函数接受的参数 数目应该和传递给array_map()函数的数组数目一直. array_map(function,array1,array2,array3...); function:必需.用户自定义的函数名称,或者是null array1:必需.规定数组 array2:可选.规定数组 array3:可选.规定数组 <?php function myfunction($v){     if($v === 'Dog'){        …
前言:我自己用此类回调函数,来替代 foreach 纯粹是用为代码的简洁性,让代码更好看.(我有点代码小洁癖~) 1.array_reduce 当迭代处理一个一维索引数组时,在回调函数内是无法获取到当时元素索引的.所以想要获取时,需得借助一个外部变量. 目的:把 $arr 遍历到 <select><option></option></select>标签内(就是拼接option字符串) $arr = [ 0 => '全部', 1 => 'a', 2…
<pre> <?php //查找,替换,过滤,判断相关函数 header("Content-Type:text/html;charset=utf-8"); /*知识点一:is_array - 判断一个变量是否是数组 原形:bool is_array ( mixed $var ) 功能:判断一个变量是否是数组,如果是返回true,否则返回 false*/ //例: /*$a=array(2,4,6); var_dump(is_array($a));//输出:true*/…
1.array_change_key_case array_change_key_case(array,case)函数将数组的所有的键都转换为大写字母或小写字母.array表示目标数组,case表示转成大写还是小写函数,CASE_LOWER默认表示转成小写也可以用0代替,CASE_UPPER表示转换成大写也可以用1代替 <?php header('Content-type:text/html;charset=utf8'); $arr = ['first' => 'this is first',…
1.处理数组键名相关的函数: array_change_key_case - 返回字符串键名全为小写或大写的数组. array_key_exists - 检查给定的键名或索引是否存在于数组中 array_keys - 返回数组中所有的键名 array_search - 在数组中搜索给定的值,如果成功则返回相应的键名 key - 从关联数组中取得键名 current - 返回数组中的当前单元 each - 返回数组中当前的键/值对并将数组指针向前移动一步 2.对数组进行切割.分解和数组单元的替换函…
× 目录 [1]键值操作 [2]记数[3]回调函数[4]组合[5]栈和队列[6]顺序 前面的话 PHP中的数组功能非常强大,数组处理函数有着强大.灵活.高效的特点.PHP5提供了近100个操作数组的系统函数,包括排序函数.替换函数.数组计算函数等.下面将详细介绍数组函数 [注意]关于javascript数组的22种方法移步至此 键值操作 数组的每个元素都是由键值对组成,通过元素的键名来访问对应的键值.关于键值操作有array_values().array_keys().in_array().ar…
<?php /** * PHP基础 数组操作函数 * * 指针函数:[类似于数据库的游标] 见例1.1 * current($arr)/pos 返回当前指针指向的元素 * key($arr) 返回当前指针指向的键 * next($arr) 返回当前指针指向的 下一个元素 * prev($arr) 返回当前指针指向的 上一个元素 * end($arr) 返回当前指针指向的 最后一个元素 * reset($arr) 将指针重置指向到 第一个元素 * * 其它函数: * count($arr,mode…
[数组中常用的多种遍历方式] [for 和 foreach 略] [while() . list() .each() 组合循环遍历数组] each()函数 a. 需要一个数组作为参数 b. 返回来的也是一个数组 c. 返回来的数组是0, 1, key, value四个下标 (固定的) 0 和key下标是当前参数数组元素的鍵 1 和value下标是当前对数数组元素的值 d. 默认认当前元素就是第一个元素 e. 每执行一次后就会将当前元素向后移动 f. 如果到最后的元素再执行这个函数,则返回 fal…
因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一个从数据库中读取的列表数组中找出某个值是最大的一条记录, 并且把这个最大的值和跟这个值相关的时间给取出来. 第二个比较复杂 ,是将这个列表数组中的值映射到另外一个列表数组中, 可以把这个过程看作是SQL中的JOIN操作, 只是JOIN的条件异常复杂 ,在这里我也不详述了,阅读的同学也不必去深入探究.…
php数组中的预定义变量 预定义常量 CASE_LOWER (integer) CASE_LOWER 用在array_change_key_case()中将数组的键名转换为小写字母.这也是array_change_key_case() 的默认值 CASE_UPPER (integer) CASE_UPPER 用在 array_change_key_case() 中将数组的键名转换成大写字母. 排序顺序标识: SORT_ASC (integer) SORT_ASC 用在array_multisor…
以下是自己比较常用的数组函数 数组元素增加减少array_pusharray_poparray_shiftarray_unshift array_splice  (对数组的增删改) array_slice   (取出数组中的一些个元素) 数组key和value的处理array_keysarray_key_exists array_valuesin_array array_searcharray_flip array_count_values 循环处理数组 array_filterarray_ma…
current();当前游标指向的数组单元值 next();下一个数组单元值 end()最后一个 reset()复位 prev()把数组指针往前一位 写法:$arr=array('a','b','c','d'); next($arr); echo current($arr); isset当值是null时false isset判断一个变量是否存在 array_key_exists('角标,数组名') 函数检查某个数组中是否存在指定的键名 in_array('值',数组名);判断值是否存在 1.ar…
主要 函数 数组 常用系统函数 函数 基础 1)定义 function 函数名([$形参1],[$形参2],.....) { //函数体 } 点击查看函数定义形式 2) 调用 函数名([$实参1][,$实参2]....) ;   //一般要与定义中形参一一对应,个数一致 3)调用过程 step 1: 将函数调用的实参数据,传递给函数的形参 step 2: 程序进入到函数内部 step 3: 在函数内部,按正常的流程顺序执行里面的代码 step 4: 如果函数结束或遇到return,返回到原来调用…
array_change_key_case -- 返回字符串键名全为小写或大写的数组array_chunk -- 将一个数组分割成多个array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values -- 统计数组中所有的值出现的次数array_diff_assoc -- 带索引检查计算数组的差集array_diff_uassoc -- Computes the difference of arrays with additi…
学习要点 数组的分类 数组的定义 数组的遍历 预定义数组 数组的相关处理函数 PHP操作数组需要注意的细节 数组的分类 关于PHP数组 由于PHP是弱类型的编程语言,所以PHP数组中的数组变量可以存储任意多个,任意类型的数据,并且可以实现其他语言强类型数据类型的堆.栈.队列等数据结构. PHP中使用数组的目的就是将多个相互关联的数据组织在一起形成集合,作为一个单元进行操作和处理. 员工信息表: ID 姓名 部门 邮箱 2016001 张三 开发部 Zs@qq.com 2016002 李四 市场部…
因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一个从数据库中读取的列表数组中找出某个值是最大的一条记录, 并且把这个最大的值和跟这个值相关的时间给取出来. 第二个比较复杂 ,是将这个列表数组中的值映射到另外一个列表数组中, 可以把这个过程看作是SQL中的JOIN操作, 只是JOIN的条件异常复杂 ,在这里我也不详述了,阅读的同学也不必去深入探究.…
实验是我学习计算机科学的一个重要方法,计算机科学不是简单的智力游戏,它本质上来说不是一门科学,而是一个改造世界的工具.数学方法和实验方法是计算机研究的基本方法,也是我们学习的基本方法,数学锻炼我们的思维能力,实验锻炼我们的操作能力,解决实际问题的能力.我们每天的工作都应该看做是一次实验,要从每天的工作中,总结出对我们来说有用的东西.比如要写好php代码,一个很重要的东西就是效率,效率高不高,我们就要做实验.下面是我对php中的几个数组循环处理方法的评测,测试的代码很简单: <?php/** * …
一, php手册的解释: call_user_func_array - 调用回调函数,并把一个数组参数作为回调函数的参数  说明: mixed  call_user_func_array  ( callable  $callback  , array $param_arr  ) 把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入. 参数 callback   被调用的回调函数.  param_arr  要被传入回调函数的数组,这个数组得是索…
<?php /** * array_walk 和 foreach, for 的效率的比较. * 我们要测试的是foreach, for, 和 array_walk的效率的问题. */ //产生一个10000的一个数组. $max = ; $test_arr = range(, $max); $temp; //我们分别用三种方法测试求这些数加上1的值的时间. // for 的方法 $t1 = microtime(true); ; $i < $max; $i++) { $temp = $temp…
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组. 简单来说 “array_map” 会对数组中的每一项进行处理,并返回处理后的数据. 定义: array_map的参数为array_map(处理函数,数组,数组...) 处理函数可以是匿名函数,也可以是具名函数 数组可以是多个数组或者是单个数组 用法: 应用场景1:对数组的每一项进行乘法操作 $arr = array(1,2,3,4,5); $result = array_map(fu…