1.数组函数:
//大多返回一个数组,键有可能变化,也可能不变。查手册
(1).键值操作:
array_values(); //提取value
array_keys(); //提取key
in_array(); //value存在?
array_key_exists(); //key存在?
array_filps(); //键值翻转
array_reverse(); //元素(整个键值对)翻转
(2).统计数组元素和键的唯一性:
count(); //元素个数
array_count_values(); //统计所有元素,每个元素出现的次数,以值为键形成新数组.
array_unique(); //提取所有的值(去重)形成新数组。
(3).利用回调函数操作数组:
array_filter($arr, "fun") //写好fun函数,即可取得想要的某些元素。(有过滤功能)
//没有fun,就默认抛出不为空的所有元素(直接剔除为空的$val)
array_map("fun", $arr) //对这个$arr的所有$val进行fun的操作。
("fun", $arr1, $arr2) //只要$arr1和$arr2元素个数相同,可以执行多个fun的作用。
( 老师讲了一个面试题:$val+1,但是不让产生新数组(就是不允许你返回数组),
所以用global或者&$arr。
这个原因就是全局变量和局部变量在捣鬼,
所以如果遇到某些函数需要带&,需要注意,它可能就是通过函数的局部变量
来改变全局变量。
)
//:输入引用型参数
$arr = array('user1'=>1, 'user2'=>2, 'user3'=>3);
function add(&$arr){
foreach($arr as $val){
$val++;
}
}
add($arr); //如果传入的不是&$arr ,这里不可能改变arr数组,因为函数内部的$arr和外面的$arr完全没关系啊。
这类函数:array_pop(); array_push();
(4).排序:
//.基于value排序
sort() //不带键的升序
rsort() //不带键的倒序
asort() //带键的升序
arsort() //带键的倒序
ksort() //基于键的升序
Krsort() //...
natsort() //处理某些字符串是数字和字母的混合体,实现 “数字这部分” 依据自然数的顺序 升序。
natcasesort() //对字母忽略大小写
array_multisort(); //两个数组(或多个数组)如果存在对应关系,则可以依据某个数组的排序对另一个数组排序。
//新浪面试题:
$arr = array('aaa', 'bbbbbbbbbbb', 'ccccccc', 'dd');
要求:(1)按标题长度排序
(2)标题长度变成标题的key
1-->去标题长度的数组:
foreach($arr as $key=>$val){
$len[]=strlen($val);
}
2-->启动array_multisort():
array_multisort($len, SORT_ASC, $arr);
//这里一定要print_r($arr),以便做下一步(结果发现key被干掉了,所以现在来加key)
//写代码写一步看下效果,再走下一步。
//通过print_r($len)和($arr),发现如果要给$arr加上key,不如把$len升个序,然后合并$len和$arr,
3-->升序$len, 然后合并两数组,返回新数组$arr2.
sort($len);
$arr2 = array_combine($len, $arr); //combine效果就是形成 $val=>$val2 的新数组。
(5).数组的拆分,合并 ; 截取; 合并:
explode
implode/join
array_slice();
array_splice();
array_merge(); //小心下标相同,造成覆盖(最后一个下标肯定只有一个$value);
这个形成数组是这样:$key1=>$val1 $key2=>$val2 ........
array_combine(); //这个是形成新数组 $val1=>$val2
array_intersect(); //交集
array_diff(); //差集,($a, $b)和($b, $a)是不同的,后面的才是参照物。
(6).数据结构:
array_pop();
array_push();
(7).