PHPDay08: 0x00 操作数组的系统函数 0x01 栈和队列 0x02 数组的合并拆分交集差集 0x03 数组排序 0x04 数组的回调函数

目录

0x00 操作数组的系统函数

0x01 栈和队列

0x02 数组的合并拆分交集差集

0x03 数组排序

0x04 数组的回调函数


0x00 操作数组的系统函数

复习:var_dump和print_r打印数组的区别

<?php
$arr = ['xidian','xdu'];
print_r($arr);
echo '<br/>';
echo $arr;
echo '<br/>';
var_dump($arr);
echo '<br/>';
die($arr);
?>

结果:

Array ( [0] => xidian [1] => xdu )
Array
array(2) { [0]=> string(6) "xidian" [1]=> string(3) "xdu" }
Array

结论:

只有print_r 和 var_dump可以完整打印数组

print_r 干净!只打印数组的键值对

var_dump 不仅打印键值对 还打印 值的数据类型。

1.数组的键值操作

(1)array_reverse(数组):传入一个数组,返回数组的逆序数组,原数组不变

<?php
$arr = ['xidian','xdu','cs'];
$ret = array_reverse($arr);
print_r($arr);
print_r($ret);
?>

(2)array_values(数组):传入一个关联数组,返回对应的索引数组。原数组不变

<?php
$arr = ['uni'=>'xidian','major'=>'cs'];
$ret = array_values($arr);
print_r($arr);
print_r($ret);
?>

(3)array_keys(数组):获取数组的键,组成一个索引数组并返回。原数组不变

<?php
$arr = ['uni'=>'xidian','major'=>'cs'];
$ret = array_keys($arr);
print_r($arr);
print_r($ret);
?>

(4)in_array(变量,数组):判断一个变量在不在一个数组中。

区别:bool is_array(变量) 判断一个变量是不是数组。

<?php
$arr = ['uni'=>'xidian','major'=>'cs'];
var_dump(in_array('xidian',$arr));
?>

(5)array_search(变量,数组):返回变量在数组中的索引。如果没有这个变量返回false

<?php
$arr = ['uni'=>'xidian','major'=>'cs'];
var_dump(array_search('xidian',$arr));
?>

(6)array_key_exists(键名,数组名) :判断一个数组中有没有这个键

(7)array_flip(键):键和值交换位置。

统计元素个数和唯一性

1.count(数组)

2.array_count_values(数组) 统计数组中每个值出现的次数

<?php
$arr = ['uni'=>'xidian','major'=>'cs','habbit'=>'cs',111,222,111];
var_dump(array_count_values($arr));
?>
array(4) { ["xidian"]=> int(1) ["cs"]=> int(2) [111]=> int(2) [222]=> int(1) } 

3.array_unique(数组) 传入一个数组,返回一个"集合"

<?php
$arr = ['uni'=>'xidian','major'=>'cs','habbit'=>'cs',111,222,111];
var_dump(array_unique($arr));
?>
array(4) { ["uni"]=> string(6) "xidian" ["major"]=> string(2) "cs" [0]=> int(111) [1]=> int(222) } 

4.array_sum(数组) 传入一个数组,返回其中值的和

<?php
$arr = ['uni'=>'xidian','major'=>'cs','habbit'=>'cs',111,222,111];
var_dump(array_sum($arr));
?>

0x01 栈和队列

1.array_push(数组,元素)元素入栈

返回值为数组中元素的个数。

2.array_pop(数组) 元素出栈,返回值为出栈的栈顶元素

<?php
$arr =[];
array_push($arr,1);
array_push($arr,2);
array_push($arr,3);
print_r($arr);
$ret = array_pop($arr);
var_dump($ret);
print_r($arr);
?>

3.array_unshift(数组,元素)头插法,返回值为数组中元素的个数。

4.array_shift(数组) 删除第一个元素。返回值为被删除的元素。

5.unset(数组[索引]) 删除数组中对应索引的元素,没有返回值。

6.array_rand(数组) 随机返回数组中的一个元素的键名。

7.shuffle(数组) 将传入数组打乱。如果是关联数组,打乱后将变成索引数组。

0x02 数组的合并拆分交集差集

1.array_merge(数组1,数组2) :

@将两个数组合并

@返回值为合并后的数组

@注意:如果合并的两个数组中,键名有重复的,后面的数组将覆盖前面的数组的值。

如果想完全保留原有的数组并只想新的数组附加到后面,用+运算符;表示在数组1之后追加数组2。即索引相同的保留1,索引不同的加到1后面。

<?php
$arr1 =[1,2,'b'=>3];
$arr2 =['b'=>34,32,'c'=>11];
//$ret = array_merge($arr1,$arr2);//[1,2,'b'=>34,32,'c'=>11]
$ret = $arr1+$arr2;//[1,2,'b'=>3,32,'c'=>11]
print_r($arr1);
print_r($arr2);
print_r($ret);
?>

2.array_combine(数组1,数组2):

@以数组1的元素为键,数组2的元素为值。返回一个新的关联数组

<?php
$arr1 =['username','age'];
$arr2 =['liudehua',55];
$ret = array_combine($arr1,$arr2);
print_r($ret);
?>

3.array_slice(数组,起始索引,[长度])

@从起始索引开始切割数组

@可以指定切割的长度,返回值为切割好的数组。

3.array_diff(数组1,数组2)

@返回值为 数组1-数组2

4.array_diff_key(数组1,数组2)

@比较两个数组的键名,并返回差集:数组1-数组2(键值对)

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","c"=>"blue","d"=>"pink");

$result=array_diff_key($a1,$a2);
print_r($result);//Array ( [b] => green ) 
?> 

5.array_intersect(数组1,数组2)

返回数组1和数组2 的交集。采用数组1的索引。

0x03 数组排序

1.bool sort(数组):从小到大排序

2.bool rsort(数组):从大到小排序

3.bool asort(数组):从小到大排序 保留键,即数组中的元素调整顺序后,原来的键是多少,还是多少。

4.bool arsort(数组):从小到大排序 保留键

5.bool ksort(数组):按键排序,从小到大

6.bool krsort(数组):按键排序 从大到小

0x04 数组的回调函数

1.call_user_function_array(函数名,参数数组)

将数组的元素作为函数的参数,调用该函数。

<?php
function test($a,$b){
    echo $a+$b;
}
call_user_func_array('test',[2,3]);
?> 

2.array_map(函数名,数组)

数组中有多少个元素,就调用函数名多少次。第一次将数组中第一个元素赋值给函数的参数,第二次将数组中第二个元素。。。

<?php
function test($a){
    echo strtoupper($a);
}
array_map(test,['a','b','c']);
?> 

3.array_work(数组,函数名,间隔符)

数组中有多少个元素,就调用该函数多少次,将元素的键值对赋值给数组的参数1和参数2,将间隔符赋值给数组的第三个元素。

<?php
function test($value,$key,$c){
    echo  $key.$c.$value;
}
$arr = ['a'=>'hello','b'=>'world'];
array_walk($arr,test,'==');
?> 

4.explode(分隔符,字符串) 以分割符为间隔将字符串转化为数组

5.implode(分隔符,数组) 将数组转化为字符串

发布了156 篇原创文章 · 获赞 19 · 访问量 8952

猜你喜欢

转载自blog.csdn.net/weixin_43415644/article/details/103830537