博客列表 >php数组常用函数

php数组常用函数

知行合一
知行合一原创
2020年07月26日 17:40:55842浏览

栈与队列

栈和队列是添加与删除受限的一种数据结构,数据的增删只允许在一端进行。

  • 栈:先进后出,后进先出。类似从羽毛球桶取羽毛球
  • 队列:尾部进,头部出,先进先出。类似排队买票。

    在栈尾部进行增删

    1. $stack=[];
    2. //array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度
    3. echo array_push($stack,'php','html','css');
    4. print_r($stack);
    5. echo '<br>';
    6. //array_pop() 函数删除数组中的最后一个元素,出栈 并返回被删除元素的值
    7. array_pop($stack);
    8. array_pop($stack);//连续删除两个元素
    9. print_r($stack);
    10. echo '<hr>';

    在栈的头部进行增删

    1. $stack2=[];
    2. /*array_unshift() 向数组插入新元素。插入到数组的开头。返回数组中元素的个数。*/
    3. echo array_unshift($stack2,'c','java','asp');
    4. print_r($stack2);
    5. echo '<br>';
    6. //array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。
    7. array_shift($stack2);
    8. print_r($stack2);
    9. echo '<hr>';
    10. echo '<hr>';

    队列删除元素

    1. $stack3=[];
    2. echo array_push($stack3,10,20,30);
    3. print_r($stack3);
    4. echo '<br>';
    5. array_shift($stack3);//删除10
    6. array_shift($stack3);//删除20
    7. echo array_unshift($stack3,'100','一千');
    8. echo '<br>';
    9. print_r($stack3);

    数组键操作

    1.拿到每一个键名

    1. echo '键的操作<br>';
    2. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
    3. $keys=[];
    4. /* 拿到每一个键,这样也可以
    5. echo key($arr);
    6. next($arr);
    7. echo key($arr);
    8. */
    9. while (key($arr)){ //因为循环条件没有更新,所以不能用while(true)
    10. $keys[]=key($arr);
    11. next($arr);
    12. }
    13. print_r($keys);

    2.array_keys 返回包含数组中所有键名的一个新数组

    1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
    2. print_r(array_keys($arr));

    3.array_key_exists() 函数 检查键名 是否存在于数组中

    1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
    2. echo array_key_exists('name',$arr)?'存在':'不存在';

    4.array_key_first查询数组中第一个键名

    1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
    2. echo array_key_first($arr);

    5.array_key_last查询数组中最后一个键

    1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
    2. echo array_key_last($arr);

    数组值的操作

    1.用数组中每一个值,组成一个新数组

    1. $arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];
    2. $key2=[];
    3. print_r($arr2);
    4. echo '<br>';
    5. foreach($arr2 as $value)
    6. {
    7. $key2[]=$value;
    8. }
    9. print_r($key2);
    10. echo '<br>';

    2. array_values 返回包含数组中所有值组成的索引数组

    1. $arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];
    2. print_r(array_values($arr2));

    3.in_array 判断一个值是否存在数组中,返回布尔值

    1. $arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];
    2. echo in_array('php',$arr2)?'存在':'不存在';

    4.array_search判断一个值是否存在数组中,返回键名。如果不存在,返回布尔假

    1. $arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];
    2. var_dump(array_search('php',$arr2));
    3. echo '-----';
    4. var_dump(array_search('php2',$arr2));
    5. echo '<br>';

    5.array_unique删除数组中重复的元素。

    1. $arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];
    2. print_r(array_unique($arr2));

    6.array_sum求数组中的数值的和

    1. $arr3=[10,20,30,'123','php100'];
    2. echo array_sum($arr3);

    7.array_product求数组中的数值的乘积

    1. $arr3=[10,20,30,'123','php100'];
    2. echo array_product($arr3); //最后一个字符串被判定为0

    数组排序

    1.sort按值排序函数 键名也会发生变化

    1. $arr=[30,2,80,16,26,'html','abc',62];
    2. print_r($arr);
    3. echo '<hr>sort按值排序函数<br>';
    4. sort($arr); //默认按值的升序排。 字符串视为0, 键名也会发生变化
    5. print_r($arr);

    2.asort按值排序函数 键名不会发生变化

    1. $arr2=[30,2,80,16,26,'html','abc',62];
    2. asort($arr2); //默认按值的升序排 键名不会发生变化
    3. print_r($arr2);

    3.ksort按键升序来排序

    1. $arr3=['d'=>30,'f'=>20,'a'=>15];
    2. print_r($arr3);
    3. echo '<hr>ksort按键升序来排序<br>';
    4. ksort($arr3); //默认按键的升序排
    5. print_r($arr3);

    4.krsort按键降序来排序

    1. $arr3=['d'=>30,'f'=>20,'a'=>15];
    2. krsort($arr3); //默认按键的降序排
    3. print_r($arr3);

    5.通过用户自定义的比较函数对数组进行排序

    1. //usort(array,myfunction); 可选。定义可调用比较函数的字符串。如果第一个参数小于等于或大于第二个参数,
    2. //那么比较函数必须返回一个小于等于或大于 0 的整数。
    3. $arr4=[26,51,2,95,120,64,82,12];
    4. usort($arr4,function($a,$b){
    5. return($a-$b);
    6. });
    7. print_r($arr4);

    6.自然排序

    1. $arr5=['img3.jpg','img5.jpg','img10.jpg','img8.jpg'];
    2. print_r($arr5);
    3. echo '<br>排序后是<br>';
    4. natsort($arr5);
    5. print_r($arr5);

    数组查询与替换

    1.array_slice从数组中取出一些元素

    1. /* 从数组中取出一些元素 ,并返回 array_slice(array必需,start必需,length规定被返回数组的长度,preserve规定函数是保留键名还是重置键名,
    2. true - 保留键名 false - 默认。重置键名) */
    3. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男','wife'=>'8'];
    4. print_r (array_slice($arr,1,3));

    2.array_splice() 函数从数组中移除选定的元素

    1. /*
    2. array_splice(array必需,start必需,length可选,array2可选)
    3. array_splice() 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。
    4. 提示:如果函数没有移除任何元素(length=0),则将从 start 参数的位置插入被替换数组。
    5. 注释:不保留被替换数组中的键名。
    6. */
    7. $arr2=[5,6,12,54,0,89,120,4,68];
    8. //删除
    9. print_r(array_splice($arr2,1,2)); //返回被删除的元素6,12
    10. echo '<br>';
    11. print_r($arr2);//重新打印
    1. $arr2=[5,6,12,54,0,89,120,4,68];
    2. $arr3=['h','a'];
    3. print_r(array_splice($arr2,2,2,$arr3));//返回被删除的元素0,89
    4. echo '<br>';
    5. print_r($arr2);//重新打印
    1. //新增
    2. $arr4=[5,6,12];
    3. $arr5=['bbb','ccc'];
    4. array_splice($arr4,2,0,$arr5);
    5. print_r($arr4);

    3.array_combine数组合并

    1. /*
    2. array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。
    3. 注释:键名数组和键值数组的元素个数必须相同!
    4. 如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。
    5. */
    6. $keys=['type','host','datebasename','username','password'];
    7. $values=['mysql','localhost','phpcn','root','root'];
    8. print_r(array_combine($keys,$values));

    数组过滤函数

    1.array_filter回调函数返回true返回结果数组中

    1. /*
    2. array_filter(array必需,callbackfunction必需规定要使用的回调函数。);函数用回调函数过滤数组中的值。
    3. 该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。 False的不返回 。数组键名保持不变。
    4. */
    5. //过滤掉数组中的非字符串
    6. $arr=['50','abc',20,true,null,'hello'];
    7. print_r(array_filter($arr,function($item){
    8. return is_string($item);
    9. }));

    2.array_map() 函数将用户自定义函数作用到数组中的每个值上

    1. /*
    2. array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
    3. 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    4. 提示:您可以向函数输入一个或者多个数组。
    5. */
    6. //将原数组中的对象元素 输出他的属性值。数组元素输出字符串,整型转化成字符串,其它的原样输出。
    7. $arr2=[50,'abc',['bb','aa','cc'],(new class{public $name='张工';public $age=25;}),100,200];
    8. $res=array_map(function($item){
    9. switch(gettype($item)){
    10. case 'object':
    11. $item=get_object_vars($item);
    12. $item=implode(',',$item) ;
    13. break;
    14. case 'array':
    15. $item=implode(',',$item) ;
    16. break;
    17. case 'integer':
    18. $item=(string)($item);
    19. }
    20. return $item;
    21. },$arr2);
    22. print_r($res);

    关联数组和变量相互转换

    1.extract() 使用数组键名作为变量名,使用数组键值作为变量值

    1. $arr=['host'=>'localhost','dbname'=>'datebase','username'=>'root','password'=>'root'];
    2. extract($arr);
    3. echo $host;

    2.compact()函数创建一个包含变量名和它们的值的数组

    1. $id=10;
    2. $name='张三';
    3. $age='25';
    4. $sex='male';
    5. $res=compact('id','name','sex','age');
    6. print_r($res);

    总结

    纪录的这些数组函数只是PHP数组函数中的一部分,学习一下有所印象,在使用到的时候再看笔记和手册吧!不难就是太多了!
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议