// index 索引 下标
array()			//生成一个数组

array_combine('array','arrray')//存放键的数组,存放值的数组合成键值数组

range('low','high','step')	//创建并返回一个包含指定范围的元素的数组。

compact()					//变量与变量的值搞成数组

array_fill('start_index','num','mixed')	//用给定的值生成数组

//数组合并和拆分:

//分
array_chunk('array','num')		//将一个大数组按指定个数分割为小数组
//合
array_merge('array','array')		//把两个或多个数组合并为一个数组。
array_merge_recursive()			//同上,不同,重复值叠成大的子数组
//截
array_slice('array','start','end')	//返回指定截取的一段数组

//数组比较:

//差集
array_diff('array','array')		//返回两个数组的差集数组,集合A减集合B
//交集/inte'sekt/
array_intersect('array','array')	//返回两个或多个数组的交集数组

//数组查找替换:

array_search('value','array')	//在数组中查找一个键值,成功返回键名

in_array('str','array')		//在数组中搜索给定的值,区分大小写

array_key_exists('key','array')//判断数组中是否有该键名
//删除或替换/splais/
array_splice()*	//删除或替换数组中指定的元素,并返回被删除或替换的数组

array_sum('array')	//返回数组中所有值的总和

//数组指针操作:

key()			//返回数组内部指针当前指向元素的键名
current()		//返回数组中的当前元素(单元)别名pos()
next()			//把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值
prev()			//把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值
end()			//将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)				
reset()			//把数组的内部指针指向第一个元素,并返回这个元素的值
list()			//用数组中的元素为一组变量赋值
array_shift()	//删除数组中的第一个元素,并返回被删除元素的值
array_unshift()	//在数组开头插入一个或多个元素
array_push()	//向数组最后压入一个或多个元素
array_pop()		//删除数组中的最后一个元素

//数组键值操作:

shuffle()*		//将数组随机打乱
count()			//计算数组中的单元数目或对象中的属性个数
array_flip()	//返回一个键值反转后的数组
array_keys()	//返回数组所有的键,组成一个数组

array_values()	//返回数组中所有值,不保留键名,组成一个数组

array_reverse()	//返回将数组倒序

array_count_values()	 //统计数组中所有的值出现的次数
array_rand()*	//从数组中随机抽取一个或多个元素,注意是键名!!!
each()

array_unique()*	//删除重复值,返回剩余数组

array_filter('array','fun')	//利用回调函数过滤数组
array_map('fun','array','array');

//数组排序:

sort()			//按升序对给定数组的值排序,不保留键名
rsort()			//对数组逆向排序,不保留键名

asort()			//对数组排序,保持索引关系
arsort()			//对数组逆向排序,保持索引关系

ksort()			//按键名对数组排序
krsort()			//将数组按照键逆向排序

natsort()		//用自然顺序算法对数组中的元素排序
natcasesort()	//自然排序,不区分大小写

//========================二维数组排序=======================
//============================================================
$users = array(
	array('name' => 'tom', 'age' => 20)
	, array('name' => 'anny', 'age' => 18)
	, array('name' => 'jack', 'age' => 22)
);

usort($users, function($a, $b) {	//回调函数排序
	$al = $a['age'];
	$bl = $b['age'];
	if ($al == $bl)
		return 0;
	return ($al > $bl) ? 1 : -1;
});

array_multisort()	//函数对多个数组或多维数组进行排序。

	$ages = array();
	foreach ($users as $user) {
		$ages[] = $user['age'];
	}
	// $users 要排序的二维数组
	// $ages 要排序的字段,必须提取出来
	array_multisort($ages, SORT_ASC, $users);
	
	// 同理,多字段排序
	array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
	
	print_r($users);