<?php
header("Content-type:text/html;charset=utf8");
//1. array_shift:将数组开头的元素移出数组 出栈 影响原数组
$arr=array(1,2,3,4,5,6,7,8,9);
echo array_shift($arr);
echo "<hr />";
//2. array_unshift:向数组开头添加一个或更多个元素,所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。 入栈,影响原数组
//array_unshift(array,var) array:目标数组,var:变量,可以多个
array_unshift($arr,5,4,2);
print_r($arr);
echo "<hr />";
//3. array_push:向数组末尾压入一个或多个元素,影响原数组
// array_push($arr,var) array:目标数组, var: 变量,可以多个
//注意:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
$arr=array("green","blue","white","black");
print_r($arr);
array_push($arr,"red");
print_r($arr);
echo "<hr />";
//4. array_pop:弹出数组末尾的一个元素
$arr=array(1,2,3,4,566,9);
echo array_pop($arr);
echo "<hr />";
/*
入栈
array_unshift() 向数组开头加入一个元素,如果键值为数字则重新排,为字符则不变
array_push() 向数组末尾加入一个元素,如果键值为数字则重新排,为字符则不变
出栈:
array_shift() 将数组开头第一个弹出,
array_pop() 将数组末尾弹出
*/
/*
5. shuffle:将数组打乱(转换为索引数组)
shuffle:洗牌,打乱
shuffle(array),返回布尔值,影响原数组
*/
$arr=array(1,2,3,4,5,6,7,8,9);
shuffle($arr);
foreach($arr as $key => $value){
echo $key."=>".$value."<br>";
}
echo "<hr />";
/*
6. 数组排序
sort:对数组进行排序(排序之后重新索引)
rsort:对数组进行逆向排序
asort:对数组进行排序并保持索引关系
arsort:对数组进行逆向排序并保持索引关系
natsort:用自然顺序算法对数组进行排序
natcasesort:natsort忽略大小写的版本
ksort:对数组按照键名进行排序
krsort:对数组按照键名逆向排序
usort:使用用户自定义的比较函数对数组的值进行排序
uasort:使用用户自定义的比较函数对数组的值进行排序并保持索引关系
uksort:使用自定义的比较函数对数组的键名进行排序
*/
$arr=array(2,4,51,24,1,124,15535,14214,122);
$arr2=array('name'=>'xiaozhang','age'=>12,'height'=>'178','weight'=>'60kg');
ksort($arr);
print_r($arr);
echo "<hr />";
/*
7. array_flip();交换键和值,如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
*/
echo "翻转键值";
$arr=array(1,2,3,55,55,55,535);
$arr2=array_flip($arr);
print_r($arr);
print_r($arr2);
echo "<hr />";
/*
8. array_rand:随机从数组中抽取一个或多个元素的键
array_rand($array,num),$array:目标数组,num:取出个数;
notice: num大于1的时候返回一个随机键的数组,否则返回一个随机键名
*/
$arr=array(1,2,3,4,5,6,'lev'=>'a','sda'=>366);
print_r($arr);
$arr2=array_rand($arr,2);
print_r($arr2);
echo "<hr />";
/*
9. array_replace:使用后面的数组中元素替换第一个数组中的元素
使用后面数组元素的值替换第一个 array 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组,它的值将被第二个数组中的值替换。
如果一个键存在于第二个数组,但是不存在于第一个数组,则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组,它将保持不变。
如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。
*/
$arrYuan=array(
'name'=>'xiaoming',
'age'=>16,
'height'=>170,
'weight'=>'67kg',
'run'=>20
);
$arrTi=array(
'zuoyouming'=>'i like run',
'like'=>'football',
'eat'=>'ice cream',
'name'=>'xiaohong'
);
$arrNew=array_replace($arrYuan, $arrTi);
print_r($arrNew);
echo "<hr />";
/*
10. array_chunk(),把数组分割为新的数组块。其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。
array_chunk(array,size) array:目标数组, size: 分割大小
*/
$arr=array('name'=>'Mr.li','family'=>'li','son'=>2,'menber'=>'5');
$arr2=array_chunk($arr,2);
foreach($arr2[1] as $key=> $value ){
echo $key."=>".$value."<br>";
}
echo "<hr />";
/*
11.array_slice() 数组中根据条件取出一段值,并返回,返回数组中的选定部分。
array_slice(array,start,length,preserve) array:目标数组,start:开始位置, length:长度 可以为负值, preserve:是否保留键名
不影响原数组
*/
$arr=array('green','blue','red','black','double');
$arr2=array_slice($arr,2);
print_r($arr);
print_r($arr2);
echo '<hr />';
/*
12. array_splice() 删除数组中某段值并将其返回,(取出数组中某段值,影响原数组)
array_splice(array,start,length,array) array:目标数组, start:开始位置, length:长度 可以为负值, array:可选参数,规定带有要插入原始数组中元素的数组。如果只有一个元素,则可以设置为字符串,不需要设置为数组
*/
$arr=array('green','blue','red','black','double');
$arr2=array_splice($arr,2);
print_r($arr);
print_r($arr2);
echo '<hr />';
/*
13. array_reverse() 函数以相反的元素顺序返回数组。函数将原数组中的元素顺序翻转,创建新的数组并返回。
如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。
注意:array_flip()是将键值翻转,而array_reverse()是将元素顺序翻转(倒序)
*/
$arr=array('color'=>'green','width'=>'138px','height'=>'50px','order'=>'DESC');
$arr2=array_reverse($arr,true);
print_r($arr);
print_r($arr2);
echo "<hr />";
/*
14. array_unique(array)函数移除数组中的重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。返回的数组中键名不变。
*/
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));