Blogger Information
Blog 24
fans 1
comment 0
visits 20860
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php数组常用函数
知行合一
Original
844 people have browsed it

栈与队列

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

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

    在栈尾部进行增删

    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数组函数中的一部分,学习一下有所印象,在使用到的时候再看笔记和手册吧!不难就是太多了!
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:为什么下面一定要加上小草图片
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post