一、数组的创建
1、array()
生成一个数组
2、array_combine()
生成一个数组,用一个数组的值作为键名,另一个数组值作为值
$a1=array("a","b","c","d");
$a2=array("Cat","Dog","Horse","Cow");
print_r(array_combine($a1,$a2));
3、range()
创建并返回一个包含指定范围的元素的数组
$number = range(0,50,10);
print_r ($number);
4、compact()
创建一个由参数所带变量组成的数组
//多个变量转数组
$name='phpff';
$email='phpff@phpff.com';
$info=compact('name','email');//传递变量名
print_r($info);
/*
Array
(
[name] => phpff
[email] => phpff@phpff.com
)
*/
extract 数组转多个变量
//数组转多个变量
$capitalcities['England'] = 'London';
$capitalcities['Scotland'] = 'Edinburgh';
$capitalcities['Wales'] = 'Cardiff';
extract($capitalcities);//转变成三个变量 England,Scotland,Wales
print $Wales;//Cardiff
5、array_fill()
用给定的值生成数组
//array_fill(开始的下标,大于零的个数,填充内容)
$arr = array_fill(2,3,"Dog");//从下标2开始填充3个‘dog’元素
print_r($arr);
二、数组合并和拆分
1、array_chunk()
把一个数组分割成新的数组块
$urls=Array(
0=>'http://cpc.people.com.cn/GB/64114/75347/',
1=>'http://www.moe.edu.cn',
2=>'http://www.mof.gov.cn',
3=>'http://www.mohrss.gov.cn',
4=>'http://www.jszzb.gov.cn',
5=>'http://www.ec.js.edu.cn');
$urls=array_chunk($urls, 2, true);//注意此处的第三个参数 true会保留之前的下标
var_dump($urls);
2、array_merge()
把两个或多个数组合并为一个数组
$arr = ['name'=>'jack','age'=>18,'shuai'];
$arr2 = ['role'=>'admin'];
$arr3 = '';
$arr4 = null;
var_dump(array_merge($arr,$arr2));
var_dump(array_merge($arr,$arr3));//此处会报错可以使用:(array)$arr3 强制转换
var_dump(array_merge($arr,$arr4));//此处会报错合并后为null
3、array_slice()
在数组中根据条件取出一段值,并返回
$arr = array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($arr,1,2));
$arr = array("a"=>"Dog","b"=>"Cat","c"=>"Horse","d"=>"Bird");
print_r(array_slice($arr,1,2));
三、数组比较
1、array_diff()
返回两个数组的差集数组.
- 只能用在一维数组上, 对多维数组无效.
- 用在一维数组上, 也只比较了值, 并没有比较键, 也就是说只要值是一样的, 就会被剔除掉, 而不管键是否一样
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","j"=>"yellow");
$result=array_diff($a1,$a2,$a3);
print_r($result);
2、array_intersect()
返回两个或多个数组的交集数组
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_intersect($fruit1, $fruit2, $fruit3);
print_r($intersection);
四、数组查找替换
1、array_search()
在数组中查找一个键值,如果成功则返回相应的键名,否则返回 FALSE
$arr_a = array(0 => "a", 1 => "b", 2 => "c");
$key = array_search("a", $arr_a);
if( $key !== FALSE ){
echo "键名为:$key";
} else {
echo '无匹配结果';
}
2、array_splice()
在数组中一部分删除用其他值替代
// 删除cat
$arr = array('apple','banana','cat','dog');
unset($arr[2]);
print_r($arr);
//自定义函数
function array_remove(&$arr, $offset)
{
array_splice($arr, $offset, 1);
}
$arr = array('apple','banana','cat','dog');
array_remove($arr, 2);
print_r($arr);
3、array_sum()
返回数组中的所有值得总和
$arr = array(5,15,25);
echo array_sum($arr);
4、in_array()
在数组中搜索给定的值,区分大小写
$people = array("Bill", "Steve", "Mark", "David");
if(in_array("Mark", $people))
{
echo "匹配已找到";
}
else
{
echo "匹配未找到";
}
5、array_key_exists()
判断某个数组中是否存在指定的key
$arr = ["Volvo"=>"XC90","BMW"=>"X5"];
if (array_key_exists("Volvo",$arr))
{
echo "键存在!";
}else{
echo "键不存在!";
}
五、数组指针操作
1、current():获取目前指针位置的键值
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(current($arr)); //白晶晶
2、key():获得目前指针位置的索引值
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(key($arr)); //mo
3、next():将数组中的内部指针移动到下一个单元
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(next($arr)); //紫霞
4、prev():将数组中的内部指针移动到上一个单元
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(next($arr)); //紫霞
var_dump(prev($arr)); //白晶晶
5、end():将数组中的内部指针移动到最后一个单元
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(end($arr));//小甜甜
6、reset():将数组中的内部指针移动到第一个单元
$arr = ['mo'=>'白晶晶','zhuyin'=>'紫霞','cai'=>'小甜甜'];
var_dump(reset($arr));//白晶晶
7、each和list使用
a、关于each()
返回数组中当前指针位置的键/值.并向前移动数组指针。
$array = array("value1", "value2", "value3", "value4");
$first = each($array);
print_r($first);
$two = each($array);
print_r($two);
/*
Array
(
[1] => value1
[value] => value1
[0] => 0
[key] => 0
)
Array
(
[1] => value2
[value] => value2
[0] => 1
[key] => 1
)
//键名为0,1,key和 value。单元 0和 key 包含有数组单元的键名,1 和 value 包含有数据。
*/
b、关于list()
把数组中的值赋给一些变量,它不是真正的函数,而是语言结构
该函数只用于数字索引的数组,且假定数字索引从 0 开始
$info = ['看月亮','小甜甜','牛夫人'];
list($var1,$var2,$var3) = $info;
echo "\"一起{$var1}的时候叫人家{$var2},现在新人胜旧人了,就叫人家{$var3}。\"";
//list() 不能对字符串起作用
list($jack) = "聂哥";
var_dump($jack); // NULL
//假定数字索引从 0 开始
$array = ['a','5'=>b,'3'=>c];
list($a,$b,$c) = $array;
var_dump($array);
var_dump($a,$b,$c);//a null null
c、结合使用
$role = ['mo'=>'白晶晶','zhuyin'=>'紫霞'];
$role['zhou'] = '至尊宝';
while ( list( $key, $value ) = each($role)){
echo $key.'--'.$value,'<br/>';
}
//while里的表达式
$info = [];
var_dump(list($key,$value) = each($info));//false;
8、array_shift
删除数组中的第一个元素,并返回被删除元素的值
$arr = array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($arr);
print_r($a);
9、array_unshift
在数组开头插入一个或多个元素
$arr = array("a"=>"red","b"=>"green");
array_unshift($arr,"blue");
print_r($arr);
10、array_push()
向数组最后压入一个或多个元素
$arr = array("red","green");
array_push($arr,"blue","yellow");
print_r($a); //Array ( [0] => red [1] => green [2] => blue [3] => yellow )
11、array_pop()
删除数组中的最后一个元素
$arr = array("red","green","blue");
array_pop($arr);
print_r($arr); //Array ( [0] => red [1] => green )
六、数组键值操作
1、shuffle()
将数组打乱,保留键名
$my_array = array("red","green","blue","yellow","purple");
shuffle($my_array);
var_dump($my_array);
2、count()
计算数组中的元素个数
$cars = array("Volvo","BMW","Toyota");
echo count($cars);
3、array_flip()
返回一个键值反转后的数组
$arr = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result = array_flip($arr);
var_dump($result);
4、array_keys()
返回数组所有的键,组成一个数组
$arr = array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($arr));
5、array_values()
返回数组中的所有值,组成一个数组
$arr = array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_values($arr));
6、array_reverse()
返回一个元素顺序相反的数组
$arr = array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
print_r(array_reverse($arr));
7、array_count_values()
统计数组中所有值出现的次数
$a = array("A","Cat","Dog","A","Dog");
print_r(array_count_values($a));
8、array_rand()
从数组中随机抽取一个或多个元素,注意是键名;当提取的数量是数组长度的时候,不会随机
$a = array("red","green","blue","yellow","brown");
$random_keys = array_rand($a,3);
var_dump($random_keys);
echo $a[$random_keys[0]]."<br>";
echo $a[$random_keys[1]]."<br>";
echo $a[$random_keys[2]];
9、each()
返回数组中当前的键/值对,并将数组指针向前移动一步
10、array_unique()
删除重复值,返回剩余数组
$arr = array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($arr));
// Array ( [a] => red [b] => green )
七、数组排序
1、sort()
按升序对给定的数组的值排序,不保留键名
$cars = array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars); //Array ( [0] => BMW [1] => Toyota [2] => Volvo )
2、rsort()
函数对数值数组进行降序排序
$cars = array("Volvo","BMW","Toyota");
rsort($cars);
print_r($cars); //Array ( [0] => Volvo [1] => Toyota [2] => BMW )
3、asort()
对数组排序,保持索引关系
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
asort($age);
print_r($age);//Array ( [Mark] => 31 [Steve] => 56 [Bill] => 60 )
4、arsort()
对数组逆向排序,保持索引关系
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
arsort($age);
print_r($age);//Array ( [Bill] => 60 [Steve] => 56 [Mark] => 31 )
5、ksort()
按键名对数组排序
$age=array("Bill"=>"60","mark"=>"31","Steve"=>"56");
ksort($age);
print_r($age); //Array ( [Bill] => 60 [Steve] => 56 [mark] => 31 )
6、krsort()
将数组按照键名逆向排序
$age=array("Bill"=>"60","mark"=>"31","Steve"=>"56");
krsort($age);
print_r($age); //Array ( [mark] => 31 [Steve] => 56 [Bill] => 60 )