PHP常用函数(一):数组常用函数
1、list()
list() 和 array() 一样,不是一个函数,而是一个语言结构,作用是为一组变量赋值。
PHP手册中的介绍
使用详情
<?php //假设现在想为$a $b $c三个变量赋值,采用info数组中的内容 $info = ['this is a','this is b','this is c']; list($a,$b,$c) = $info; print<<<EOT $a
$b
$c
EOT;
运行结果
2、each()
//实例代码 遍历$arr <?php $arr = ['a'=>'this is a','b'=>'this is b','c'=>'this is c']; while($tmp = each($arr)) { echo $tmp['key'].':'.$tmp['value'].'
'; }
运行结果:
3、数组指针操作
- current()
- key()
- next()
- prev()
- end()
- reset()
<?php /* 1 current(); //读取指针位置的内容 2 key(); //读取当前指针指向内容的索引值 3 next(); //将数组中的内部指针指向下一单元 4 prev(); //将数组内部指针倒回一位 5 end(); //将数组内部指针指向最后一个元素 6 reset(); //将目前指针指向第一个索引位置 */ $info = [ 'a' => 'this is a', 'b' => 'this is b', 'c' => 'this is c', 'd' => 'this is d' ]; echo key($info).':'.current($info).'
'; next($info); echo key($info).':'.current($info).'
'; end($info); echo key($info).':'.current($info).'
'; reset($info); echo key($info).':'.current($info).'
';
运行结果:
4、键值操作函数
- array_values($arr) - 获得数组的值
- array_keys($arr[,$search[,$strict]]) - 获得数组的键名
- array_flip($arr) - 数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
- array_search($goal,$arr[,$strict]) - 检索给定的值,加true则是严格类型检查
- array_reverse($arr[,$preserve_keys]) - 将数组中的元素翻转(前后顺序)
- in_array($goal,$arr[,$strict]) - 判断值是否在数组中
- array_key_exists($key,$arr) - 检索给定的键名是否存在数组中
- array_count_values($arr) - 统计数组中所有值出现的次数
- array_unique($arr[,$sort_flags]) - 删除数组中重复的值
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; echo 'keys:
'; //输出info数组的所有键 var_dump(array_keys($info)); echo '
'; echo 'values:
'; //输出info数组的所有值 var_dump(array_values($info)); echo '
'; //转换info数组 键值互换 echo 'flips:
'; var_dump(array_flip($info)); echo '
'; //搜索apple echo 'search:
'; echo 'apple key is :'.array_search('apple',$info); echo '
'; //元素翻转 echo 'reverse:
'; var_dump(array_reverse($info)); echo '
'; //检查元素 echo 'in?
'; echo 'blog is in $info? '.var_dump(in_array('blog',$info)); echo '
'; //检查键 echo 'key in?
'; echo 'b is in $info? '.var_dump(array_key_exists('b',$info)); echo '
'; //统计值的出现次数 $info[] = 'blog'; $info[] = 'blog'; echo 'value count
'; var_dump(array_count_values($info)); echo '
'; //删除重复的值 echo 'before unique
'; var_dump($info); echo '
after unique
'; var_dump(array_unique($info));
运行结果:
5、回调函数
- array_filter($arr[,$callback[,$flag]]) //使用回调函数过滤数组中的元素,如果回调返回true则当前的元素被包含到返回数组中
- array_walk($arr,$callback[,$userdata]) //回调函数处理数组,自定义函数要有两个参数,本函数第三个参数可以作为回调第三个参数返回
- array_map($callback,$arr1[,$arr....]) //可以处理多个数组,每个数组的长度应该相同,传入数组的个数和回调函数参数个数应该一致
示例数组:
$info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ];
array_filter();
PHP手册参考:
//array_filter(); //不使用flag $filter_arr = array_filter($info,function($value){ return strlen($value) == 3; }); var_dump($filter_arr); echo '
'; //使用flag $filter_arr = array_filter($info,function($key){ return in_array($key,['a','c']); },ARRAY_FILTER_USE_KEY); var_dump($filter_arr); echo '
'; $filter_arr = array_filter($info,function($value,$key){ return in_array($key,['a','c']) && $value == 'apple'; },ARRAY_FILTER_USE_BOTH); var_dump($filter_arr); echo '
';
输出结果:
array_walk();
PHP手册参考:
//array_walk(); //不使用 userdata array_walk($info,function($value,$key){ echo "$key:$value "; }); echo "
"; //使用 userdata array_walk($info,function(&$value,$key,$userdata){ $value = $userdata.'-'.$value; },'php'); var_dump($info); echo "
";
输出结果:
array_map();
PHP手册参考:
//array_map(); //单个数组 array_map(function($n){ echo "$n "; },$info); echo "
"; //多个数组 $info_2 = [ 'e' => 'egg', 'f' => 'filco', 'g' => 'good' ]; array_map(function($n1,$n2){ echo "1:$n1-2:$n2 "; },$info,$info_2); echo '
';
运行结果:
6、数组分割
- array_slice($arr,$offset[,$length[,preserve_keys]]) //将数组中的一段取出(数组的分段)
- array_splice($arr,$offset[,$length[,$replacement]]) //将数组中的一段取出,返回的序列从原数组中删除
- array_chunk($arr,$size[,$preserve_keys]) //将一个数组分割成多个
array_slice()
PHP手册参考
array_splice()
PHP手册参考:
array_chunk()
PHP手册:
测试代码:
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; //array_slice() echo 'array_slice:
'; print_r(array_slice($info,0,3)); echo '
'; //array_splice(); echo 'array_splice:
'; echo '原数组:
'; print_r($info); echo '
'; //替换掉前两位 $tmp = array_splice($info,0,2,['king','queen']); echo '替换后的数组:
'; print_r($info); echo '
'; echo '替换掉数组:
'; print_r($tmp); echo '
'; //恢复原数组 $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; //array_chunk(); echo 'array_splice:
'; echo '替换后的数组:
'; $tmp = array_chunk($info,2); var_dump($tmp);
运行结果:
7、数组运算
- array_sum($arr) 元素求和
- array_merge($arr1[,$arr...]) 数组合并
- array_diff($arr1,$arr2[,$arr....]) 数组求差集 - 在arr1中但不在其他数组中的值
- array_intersect($arr1,$arr2[,$arr...]) 数组求并集 - 在arr1中且在其他数组中的值
测试代码:
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; $info_2 = [ 'e' => 'apple', 'f' => 'egg', 'g' => 'java', 'h' => 'cat' ]; $info_num = [120,10,1]; //array_sum echo 'array_sum:
'; echo array_sum($info_num); echo '
'; echo array_sum($info); //只对元素中的数值进行求和 echo '
'; //array_merge echo 'array_merge:
'; print_r(array_merge($info,$info_2,$info_num)); echo '
'; //array_diff - 返回在info中但不在其他arr中的值 echo 'array_diff:
'; print_r(array_diff($info,$info_2)); echo '
'; //array_intersect - 返回在info中也在在其他arr中的值 echo 'array_intersect:
'; print_r(array_intersect($info,$info_2)); echo '
';
运行结果:
8、数组的栈和队列操作
- array_push($arr,$value[,$...]) - 将一个或多个单元压入数组的末尾(入栈)
- array_pop($arr) - 弹出数组最后一个单元(出栈)
- array_shift($arr) - 将数组开头的单元移出数组
- array_unshift($arr,$value[,$...]) - 在数组开头插入一个或多个单元
9、数组的排序操作
- sort($arr[,$sort_flag]) - 从小到大,忽略键名
- rsort($arr[,$sort_flag]) - 从大到小,忽略键名
- asort($arr[,$sort_flag]) - 从小到大,保留键名
- arsort($arr[,$sort_flag]) - 从大到小,保留键名
- ksort($arr[,$sort_flag]) - 按键名正序排列
- krsort($arr[,$sort_flag]) - 按键名倒序排列
10、其他常用函数
- shuffle($arr) - 打乱数组