PHP数组函数知识汇总_php技巧
本文为大家分享了PHP数组函数基础知识,供大家参考,具体内容如下 数组array是非常重要的数据类型。相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值。数组能够在单一变量名中存储许多值,并且能够通过引用下标号来访问某个值。 一、创建数组 array(key => value) 1、创建索引数组 使用array()函数声明数组。PHP属于弱类型语言相对较灵活和方便,也可以直接是数组的元素值value,不需要键值key,索引是自动分配的(索引从 0 开始)。 array("1" => "百度","2" => "阿里","3" => "腾讯");或者是不使用键值:array("百度","阿里","腾讯");当然也可以写成:$arr[0] = "百度";$arr[1] = "阿里";$arr[2] = "腾讯"; 2、创建关联数组 关联数组和索引数组类似,只是关联数组不能够像索引数组的键名那样只能够为数字,它可以是数值和字符串以及混合形式,判断一个数组是否为关联数组的依据是:数组中的键名是否存在一个不是数字的。不是就是关联。 array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯"); 3、多维数组 array(array(),array()) 二维数组 获得数组的长度 - count() 函数 <?php$arr = array("百度","阿里","腾讯");echo count($arr);?> //结果返回3(说明数组中有三个元素) 二、遍历数组 输出数组中元素的值。对于索引数组常用for、foreach;对于关联数组常用foreach。使用print_r()函数打印循环后的结果,也可以用var_dump()。 1、遍历索引数组 遍历并输出索引数组的所有值,可以使用for、 foreach(array_expression as value)、foreach(arrayexpressionaskey => $value) 循环,如下: 使用for循环 <?php$arr = array("百度","阿里","腾讯");$arrlen = count($arr);//获取数组的长度for ($i=0; $i <$arrlen ; $i++) { $data[] = $arr[$i]; }echo "<pre>"; //换行显示print_r($data); 打印结果显示如下: <?php$arr = array("百度","阿里","腾讯");foreach ($arr as $value) { $data[] = $value;}echo "<pre>"; //换行显示print_r($data);//打印结果和上面一样 注意:data后面有一个数组符号[],为什么呢? 2、遍历关联数组 遍历并输出关联数组的所有值,可以使用 foreach (array_expression as key=>value) 循环,如下: <?php$arr = array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");foreach ($arr as $key => $value) { $data[$key] = $value;}echo "<pre>"; //换行显示print_r($data); 打印结果显示: Array( [李彦宏] => 百度 [马云] => 阿里 [马化腾] => 腾讯) 注意到没?此时的data后是[$key]?而不是[] 三、增加删除数组的元素 在数组元素的尾部增加 <?php$arr = array("百度","阿里","腾讯");array_push($arr,"知乎","微博");echo "<pre>"; //换行显示print_r($arr);//打印结果显示:Array( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎 [4] => 微博) 在数组元素的开始增加 <?php$arr = array("百度","阿里","腾讯");array_unshift($arr,"知乎","微博");echo "<pre>"; //换行显示print_r($arr);//打印结果显示:Array( [0] => 知乎 [1] => 微博 [2] => 百度 [3] => 阿里 [4] => 腾讯) 在数组元素的尾部删除 <?php$arr = array("百度","阿里","腾讯");array_pop($arr);echo "<pre>"; //换行显示print_r($arr);打印结果显示:Array( [0] => 百度 [1] => 阿里) 在数组元素的开始删除 <?php$arr = array("百度","阿里","腾讯");array_shift($arr);echo "<pre>"; //换行显示print_r($arr);打印结果显示:Array( [0] => 阿里 [1] => 腾讯) 移除数组中重复的值 <?php$arr = array("百度","阿里","腾讯","百度","微博");$data = array_unique($arr);echo "<pre>";print_r($data);打印结果显示:Array( [0] => 百度 [1] => 阿里 [2] => 腾讯 [4] => 微博) 四、定位数组元素 搜索数组中存在的值 <?php$arr = array("百度","阿里","腾讯");while (in_array("百度", $arr)) { echo "已经找到"; break;} //输出已经找到 在数组中根据条件取出一段值: array_slice(array,start,length,preserve) length 可选。数值。规定被返回数组的长度。 <?php$arr = array("百度","阿里","腾讯","知乎","微博");$data = array_slice($arr,0,4);echo "<pre>";print_r($data);打印结果显示:Array( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎) array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。 <?php$arr1 = array("百度","阿里","腾讯");$arr2 = array("知乎","微博");array_splice($arr1,0,2,$arr2);echo "<pre>";print_r($arr1);打印结果显示:Array( [0] => 知乎 [1] => 微博 [2] => 腾讯) 五、数组合并、拆分、比较 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。 <?php$arr1 = array("百度","阿里","腾讯");$arr2 = array("知乎","微博");$data = array_merge($arr1,$arr2);echo "<pre>";print_r($data);打印结果显示:Array( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎 [4] => 微博) 递归追加数组 $arr= array('one'=>'C', 'one'=>'B'); $arr1= array('three'=>'1', 'one'=>'2'); $arr2= array_merge_recursive($arr, $arr1); echo "<pre>";print_r($arr2); 打印结果显示:Array( [one] => Array ( [0] => B [1] => 2 ) [three] => 1) 合并两个数组 $arr= array('A', 'B'); $arr1= array('1', '2'); $arr2= array_combine($arr, $arr1);echo "<pre>";print_r($arr2); 打印结果显示:Array( [A] => 1 [B] => 2) 求数组的交集 $arr= array('A', 'B', 'C', 'D'); $arr1= array('A', 'B', 'E'); $arr2= array('A', 'F', 'D'); $arr3= array_intersect($arr, $arr1, $arr2); echo "<pre>";print_r($arr3); 打印结果显示:Array( [0] => A) 注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。 求关联数组的交集 $arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array('a'=>'A', 'c'=>'B', 'E'); $arr2= array('a'=>'A', 'b'=>'F', 'd'=>'B'); $arr3= array_intersect_assoc($arr, $arr1, $arr2); echo "<pre>";print_r($arr3); 打印结果显示:Array( [a] => A) 求关联数组的差集 $arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array('a'=>'A', 'b'=>'B', 'e'=>'E'); $arr3= array_diff_assoc($arr, $arr1); echo "<pre>";print_r($arr3); 打印结果显示:Array( [c] => C [d] => D) 其他有用的数组函数 $arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array_rand($arr, 2); echo "<pre>";print_r($arr1);打印结果显示: Array( [0] => c [1] => d) //每次刷新显示的结果都不一样 对数组中的值求和 $arr= array('A', 32, 12, 'B'); $count= array_sum($arr); echo "<pre>";print_r($count); 打印结果显示: 如果数组中包含其他数据类型(例如字符串),这些值将被忽略。 划分数组 $arr= array('A', 'B', 'C', 'D'); $arr1= array_chunk($arr, 2); echo "<pre>";print_r($arr1); 打印结果显示: Array( [0] => Array ( [0] => A [1] => B ) [1] => Array ( [0] => C [1] => D )) 处理数组时可调用函数有 array_filter(*array*,*callbackfunction*);array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*)array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*)array_reduce(*array*,*myfunction*,*initial*)array_walk(*array*,*myfunction*,*userdata*...)…… 以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。 |