php数组的相关处理函数

zxh5566  2016-07-19 06:55   Hits: 

一、数组的键值操作函数
 
在PHP中,数组的每个元素都是由键值对组成,通过元素的键来访问对应键的值,关联数组指的是键名为字符串的数组,索引和键名指的是同一样东西,索引多指数组的数字形式的下标,使用数组的处理函数,可以很方便的对数组中每个元素的键和值进行操作,进而生成一个新数组
 
1、函数array_values()
 
array_values()函数的作用是返回数组中的所有元素的值,使用非常方便,只有一个必选参数,规定传入给定的数组,返回一个包含给定数组中所有值的数组,但不保留键名,被返回的数组将使用顺序的数值键重新建立索引,从0开始以1递增,适合用于数组中元素下标混乱的数组,或者可以将关联数组转化为索引数组。代码如下:
 
<?php
$contact = array('id'=>1,'name'=>'zxh','phone'=>'15822422406');
print_r(array_values($contact));
print_r($contact); //原数组不变
?>
 
2、函数array_keys();
 
array_keys()函数的作用是返回数组中所有的键名,本函数中有一个必需参数和两个可选参数,其函数的原型如下
array_keys(array_input[,mixed search_value[,bool strict]]);
如果指定了可选参数search_value,则只返回指定该值的键名,否则input数组中的所有键名都会返回,自PHP5起,可以使用strict参数来进行全等比较,需要传入一个布尔型的值,FALSE为默认值不依赖类型,如果传入true则根据类型返回带有指定值的键名,
<?php
$lamp = array('a'=>'apache','b'=>'linux','c'=>'mysql','d'=>'php');
print_r(array_keys($lamp)); //输出 array([0]=>a [1]=>b [2]=>c [3]=>d);
print_r(array_keys($lamp,'apache')); //输出 array([0]=>a)
$a = array(10,20,30,'10');
print_r(array_keys($a,'10',false)); //输出array([0]=>0 [1]=>3)
print_r(array_keys($a,'10',true)); //输出array([0]=>3)
?>
 
3、函数in_array()
该函数作用是检测数组中是否存在某值,即在数值中搜索给定的值,该函数第一个参数为规定要在数据中搜索的值,第二个参数是规定要被搜索的数组,如果给定的值存在于数组中则返回TRUE,如果第三个参数设置TRUE,函数只有在元素存在于数组中并且数据类型与给定值相同才返回TRUE,如果没有在数组中找到参数,函数返回false,要注意如果needle参数是字符串,且strict参数设置为TRUE,则搜索区分大小写,函数in_array()使用代码如下所示:
 
<?php
$os = array("Mac","NT","Irix","Linux");
if(in_array("Irix",$os)){
echo "got Irix";
}
if(in_array("mac",$os)){
echo "got mac"; //这个条件失败因为in_array()是区分大小写的
}
$a = array('1.10',12.4,1.13);
if(in_array('12.4',$a,true)){
echo "12.4 found with strict cheek\n"; //这个条件不成立,因为用了第三个参数true,字符串'12.4'与浮点数12.4类型不同 
}
 
//in_array()中还可以用数组作为第一个参数
$a = array(array('p','h'),array('p','r','o'));
if(in_array(array('p','h'),$a)){
echo 'ph' was found\n';
}
 
?>
 
也可以使用array_search()函数进行检索,该函数与in_array()相同,搜索给定值存在则返回相应的键名,也支持对数据类型的严格判断,
<?php
$lamp = array('a'=>'Linux','b'=>'Apache','c'=>'MySQL','d'=>'PHP');
echo array_search('PHP',$lamp); //输出 d
$a = array('a'=>'8','b'=>8,'c'=>'8');
echo array_search(8,$a,true); //输出 b
?>
 
此外,使用array_key_exists()函数可以检查给定的键名或索引是否存在于数组中,因为在一个数组中键名必须是唯一的,所以不需要对其数据类型进行判断,也可以使用isset()函数完成对数组中的键名或索引进行检查,但isset()对于数组中为null的值不会返回true,而array_key_exists()会
<?php
$search_array = array('first'=>1,'second'=>4);
if(array_key_exists('first',$search_array)){
echo "键名为'first'的元素在数组中";
}
?>
 
4、函数array_flip()
作用是交换数据中的键和值,返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为值,覆盖前面出现的元素,如果原数组中的数据类型不是字符串或整数,函数将报错,该函数只有一个参数,参数是必须的,要求输入一个要处理的数组,返回该数组中每个元素的键和值交互后的数组
 
5 、array_reverse()
作用是将原数组中的元素顺序翻转,创建新的数组并返回,该函数有两个参数,其函数的原型如下:
第一个参数是必须项,接受一个数组作为输入,第二个参数是可选项,如果指定为true,则元素的键名保持不变,否则键名将丢失
 
6、count()
函数count()的作用是计算数组中元素的个数,对于数组,返回元素个数对于其他值则返回1,如果参数是变量而变量没有定义或是变量包含一个空的数组,该函数会返回0,函数包括两个参数,第一个参数是必须的,规定函数传入的数组或对象,第二个参数是可选的,规定函数的模式是否递归的计算多维数组中的数组的元素个数,可以是1或0,1检测多维数组
<?php
$lamp = array('a'=>'Linux','b'=>'Apache','c'=>'MySQL','d'=>'PHP');
echo count($lamp); //输出4
 
$web = array('lamp'=>array('linux','apache','mysql','php')
              'j2ee'=>array('unix','tomcat','oracle','jsp')
);
echo count($web,1); //输出10
 
7、函数array_count_values()
函数统计数组中所有值出现的次数,该函数只有一个参数,其函数参数规定输入一个数组,返回一个数组,其元素键名是原数组的值,键值是该值在原数组中出现的次数
<?php
$array = array(1,'php',1,'mysql','php');
$newArray = array_count_values($array);
print_r($newArray); //输出 Array([1]=>2[php]=>2[mysql]=>1)
?>
 
8、函数array_unique()
函数作用于删除数组中重复的值,并返回没有重复值的新数组,该函数只有一个参数,参数需要一个数组,当数组中几个元素的值相等时,只保留第一个元素,其他元素被删除,并且返回的新数组中键名不变,array_unique先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名,这并不意味着在末排序array中同一个值的第一个出现的键名会被保留
<?php
$a = array('a'=>'php','b'=>'mysql','c'=>'php');
print_r(array_unique($a)); //输出Array([a]=>php [b]=>mysql)
上一篇:网站制作需要准备的资料
下一篇:PHP使用回调函数处理数组array_filter(),array_walk(),