PHP之array
2016-07-09 13:54
741 查看
数组函数详细介绍
数组排序
<?php $arr = array( 2,1,4,5,6 ); sort($arr); listarr($arr,'sort'); rsort($arr); listarr($arr,'rsort'); function listarr($arr,$name){ echo $name; echo PHP_EOL; foreach($arr as $key => $val){ echo $key,'--',$val; echo PHP_EOL; } echo PHP_EOL; } //key的序列会重新调整 sort 0--1 1--2 2--4 3--5 4--6 rsort 0--6 1--5 2--4 3--2 4--1
<?php $arr = array( 2,1,4,5,6 ); asort($arr); listarr($arr,'asort'); arsort($arr); listarr($arr,'arsort'); function listarr($arr,$name){ echo $name; echo PHP_EOL; foreach($arr as $key => $val){ echo $key,'--',$val; echo PHP_EOL; } echo PHP_EOL; } //保留原来的键值对应关系 asort 1--1 0--2 2--4 3--5 4--6 arsort 4--6 3--5 2--4 0--2 1--1
<?php $arr = array( 2=>'2',4=>'4',3=>'3',6=>'6',5=>'5' ); ksort($arr); listarr($arr,'ksort'); krsort($arr); listarr($arr,'krsort'); function listarr($arr,$name){ echo $name; echo PHP_EOL; foreach($arr as $key => $val){ echo $key,'--',$val; echo PHP_EOL; } echo PHP_EOL; } //比较键的大小,用于关联数组 ksort 2--2 3--3 4--4 5--5 6--6 krsort 6--6 5--5 4--4 3--3 2--2
数组元素插入取出
<?php $fruit = array("orange", "banana"); array_unshift($fruit, "apple", "raspberry"); //array("apple", "raspberry","orange", "banana") array_shift($fruit); //array("raspberry","orange", "banana") array_push($fruit,"apple"); //array("raspberry","orange", "banana","apple") array_pop($fruit); //array("raspberry","orange", "banana")
array_pad(array(),$length,value)
用值将数组填补到指定长度<?php $input = array(12, 10, 9); $result = array_pad($input, 5, 0); // result is array(12, 10, 9, 0, 0) $result = array_pad($input, -7, -1); // result is array(-1, -1, -1, -1, 12, 10, 9) $result = array_pad($input, 2, "noop"); // not padded
array_sum
<?php $arr = array(1,2,3,4,5); echo array_sum($arr);
array_diff()
计算数组的差集//返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。 <?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); ## Array ( [1] => blue )
array_diff_key()
使用键名比较计算数组的差集<?php $array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); var_dump(array_diff_key($array1, $array2)); ## array(2) { ["red"]=> int(2) ["purple"]=> int(4) }
array_diff_assoc()
带索引检查计算数组的差集,即键名键值都一致就排除<?php $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result = array_diff_assoc($array1, $array2); print_r($result); ## Array ( [b] => brown [c] => blue [0] => red )
array_intersect()
计算数组的交集<?php $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2); print_r($result); ## Array ( [a] => green [0] => red )
array_intersect_key()
使用键名比较计算数组的交集<?php $array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); var_dump(array_intersect_key($array1, $array2)); ## array(2) { ["blue"]=> int(1) ["green"]=> int(3) }
array_unique
返回没有重复值的新数组,键名保持不变,同值保留第一个<?php $arr = array(1,2,2,2,5); echo count( array_unique($arr) ); listarr(array_unique($arr),'unique'); function listarr($arr,$name){ echo $name; echo PHP_EOL; foreach($arr as $key => $val){ echo $key,'--',$val; echo PHP_EOL; } echo PHP_EOL; } //去除重复元素,键不会重新排序 3unique 0--1 1--2 4--5
array_flip($arr)
将数组键值调转,同名保留最后一个<?php $input = array("a" => "green", "red", "b" => "green", "blue", "red"); print_r(array_flip(array_flip($input))); ##可以达到跟array_unique()同样的效果 Array ( [b] => green [2] => red [1] => blue )
array_rand
<?php //返回一个随机值 $arr = array(1,2,2,2,5); echo $arr[array_rand($arr)];
extract
<?php $arr = array( 'name'=>'ligbee' ); extract($arr); echo $name; echo PHP_EOL; $new = compact(name); echo($new['name']); //extract将 数组 转换为 变量-值 ligbee //compac将 变量-值 转换为 数组 ligbee
array_walk
<?php $arr = array(1,2,3); function add($val){ echo ++$val; } array_walk($arr,'add'); //将数组中的元素传递给定义的函数 234
array_map
<?php $arr = array(1,2,3); function add($val){ return ++$val; } $new = array_map('add',$arr); print_r($new); // Array ( [0] => 2 [1] => 3 [2] => 4 )
array_filter($arr,callback)
数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则数组的当前值会被包含在返回的结果数组中,FALSE则被移除。数组的键名保留不变。<?php function odd($var) { return($var & 1); } function even($var) { return(!($var & 1)); } $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); $array2 = array(6, 7, 8, 9, 10, 11, 12); echo "Odd :\n"; print_r(array_filter($array1, "odd")); echo "Even:\n"; print_r(array_filter($array2, "even")); ?> ## Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 ) //当callback为空时,数组值为空,null,0时返回FALSE <?php $entry = array( 0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => '' ); print_r(array_filter($entry)); ?> ## Array ( [0] => foo [2] => -1 )
array_reduce($arr,callback[,initial])
将回调函数迭代地作用到数组中的每一个单元中,从而将数组简化为单一的值。如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。<?php function rsum($v, $w) { $v += $w; return $v; } function rmul($v, $w) { $v *= $w; return $v; } $a = array(1, 2, 3, 4, 5); $x = array(); $b = array_reduce($a, "rsum"); //15 $c = array_reduce($a, "rmul", 10); //1200 $d = array_reduce($x, "rsum", "No data to reduce"); //No data to reduce ?>
array_combine(array(),array())
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值<?php $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); print_r($c); ?> ## Array ( [green] => avocado [red] => apple [yellow] => banana )
array_chunk
将一维数组分组成二维<?php $arr = array('l','i','g','b','e','e'); print_r(array_chunk($arr,3)); ## Array ( [0] => Array ( [0] => l [1] => i [2] => g ) [1] => Array ( [0] => b [1] => e [2] => e ) )
array_column($arr,key)
返回数组中指定的一列<?php $records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ), array( 'id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones', ), array( 'id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe', ) ); $first_names = array_column($records, 'first_name'); print_r($first_names); ?> ## Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
array_serach($str, array())
在数组中搜索给定的值,如果成功则返回相应的键名<?php $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); $key = array_search('green', $array); // $key = 2; $key = array_search('red', $array); // $key = 1; ?>
current(array()) 指针
返回数组中的当前单元<?php $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot'; $mode = next($transport); // $mode = 'bike'; $mode = current($transport); // $mode = 'bike'; $mode = prev($transport); // $mode = 'foot'; $mode = end($transport); // $mode = 'plane'; $mode = current($transport); // $mode = 'plane'; $arr = array(); var_dump(current($arr)); // bool(false) $arr = array(array()); var_dump(current($arr)); // array(0) { } ?>
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 关于浮动与清除浮动,你应该知道的
- 数组reduce方法的高级技巧
- php7 读取php.ini[4]
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页