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 <br> $b <br> $c <br> 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'].'<br>'; }
运行结果:
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).'<br>'; next($info); echo key($info).':'.current($info).'<br>'; end($info); echo key($info).':'.current($info).'<br>'; reset($info); echo key($info).':'.current($info).'<br>';
运行结果:
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:<br>'; //输出info数组的所有键 var_dump(array_keys($info)); echo '<br>'; echo 'values:<br>'; //输出info数组的所有值 var_dump(array_values($info)); echo '<br>'; //转换info数组 键值互换 echo 'flips:<br>'; var_dump(array_flip($info)); echo '<br>'; //搜索apple echo 'search:<br>'; echo 'apple key is :'.array_search('apple',$info); echo '<br>'; //元素翻转 echo 'reverse:<br>'; var_dump(array_reverse($info)); echo '<br>'; //检查元素 echo 'in?<br>'; echo 'blog is in $info? '.var_dump(in_array('blog',$info)); echo '<br>'; //检查键 echo 'key in?<br>'; echo 'b is in $info? '.var_dump(array_key_exists('b',$info)); echo '<br>'; //统计值的出现次数 $info[] = 'blog'; $info[] = 'blog'; echo 'value count<br>'; var_dump(array_count_values($info)); echo '<br>'; //删除重复的值 echo 'before unique<br>'; var_dump($info); echo '<br>after unique<br>'; 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 '<br>'; //使用flag $filter_arr = array_filter($info,function($key){ return in_array($key,['a','c']); },ARRAY_FILTER_USE_KEY); var_dump($filter_arr); echo '<br>'; $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 '<br>';
输出结果:
array_walk();
PHP手册参考:
//array_walk(); //不使用 userdata array_walk($info,function($value,$key){ echo "$key:$value "; }); echo "<br>"; //使用 userdata array_walk($info,function(&$value,$key,$userdata){ $value = $userdata.'-'.$value; },'php'); var_dump($info); echo "<br>";
输出结果:
array_map();
PHP手册参考:
//array_map(); //单个数组 array_map(function($n){ echo "$n "; },$info); echo "<br>"; //多个数组 $info_2 = [ 'e' => 'egg', 'f' => 'filco', 'g' => 'good' ]; array_map(function($n1,$n2){ echo "1:$n1-2:$n2 "; },$info,$info_2); echo '<br>';
运行结果:
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:<br>'; print_r(array_slice($info,0,3)); echo '<br><hr>'; //array_splice(); echo 'array_splice:<br>'; echo '原数组:<br>'; print_r($info); echo '<br>'; //替换掉前两位 $tmp = array_splice($info,0,2,['king','queen']); echo '替换后的数组:<br>'; print_r($info); echo '<br>'; echo '替换掉数组:<br>'; print_r($tmp); echo '<br><hr>'; //恢复原数组 $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; //array_chunk(); echo 'array_splice:<br>'; echo '替换后的数组:<br>'; $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:<br>'; echo array_sum($info_num); echo '<br>'; echo array_sum($info); //只对元素中的数值进行求和 echo '<br><hr>'; //array_merge echo 'array_merge:<br>'; print_r(array_merge($info,$info_2,$info_num)); echo '<br><hr>'; //array_diff - 返回在info中但不在其他arr中的值 echo 'array_diff:<br>'; print_r(array_diff($info,$info_2)); echo '<br><hr>'; //array_intersect - 返回在info中也在在其他arr中的值 echo 'array_intersect:<br>'; print_r(array_intersect($info,$info_2)); echo '<br><hr>';
运行结果:
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) - 打乱数组