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) - 打乱数组