PHP内置数组函数详解(2)

二、统计数组元素的个数和唯一性

1.函数count(mixed var[,int var])
函数作用是计算数组中的元素数目或对象中的属性个数。对于数组返回元素的个数,对于其他值则返回1,如果参数是变量而变量没有定义或变量包含一个空的数组,函数返回0.
第二参数是可选的,值为0或1,0为默认值,不检测多维数组。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");
$result = count($people);

echo $result;
?>
输出:
4

2.函数array_count_values(array input)
函数用于统计数组中所有值出现的次数。当规定输入一个数组,返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。
<?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?>
输出:
Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )

3.函数array_unique(array array)
函数用于删除数组中重复的值,并返回没有重复值的新数组。参数需要接收一个数组,当数组中几个元素的值相等时,只保留第一个元素,其他的元素被删除,并且返回的新数组中键名不变。array_unique()值先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略后面的键名。这并不意味着在未排序的array中同一个值的第一个出现的键名会被保留。
<?php
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
print_r(array_unique($a));
?>
输出:
Array ( [a] => Cat [b] => Dog )

二、使用回调函数处理数组的函数

函数的回调是PHP中的一种特殊机制,这种机制允许在函数的参数列表中,传入用户自定义的函数地址作为参数处理或完成一定的操作。使用回调函数可以很容易地实现一些所需要的功能。

1.函数array_filter(array input[,callback callback])
函数用回调函数过滤数组中的元素,返回按用户自定义函数过滤后的新数组。该函数的第一个参数是必选项,要求输入一个过滤的数组。第二个参数是可选项,将用户自定义的函数名以字符串形式传入。如果自定义过滤函数返回true,则被操作的数组的当前值就会被含在内返回的结果数组,并将结果组成一个数组。如果原数组是一个关联数组,则键名保持不变。
<?php
function myfunction($v) 
{
if ($v==="Horse")
	{
	return true;
	}
return false;
}
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_filter($a,"myfunction"));
?>
输出:
Array ( [2] => Horse )

2.函数array_walk(array $array,callback function[,mixed userdata])
函数对数组中的每一个元素应用回调函数处理。如果成功返回true,否则返回false。第一个参数必选项,输入被指定的回调函数处理的数组。第二个参数也是必选,输入用户定义的回调函数,用于操作传入第一个参数的数组。自定义的回调函数接受两个参数,依次传入进来元素的值作为第一个参数,键名作为第二个参数。函数中提供可选的第三个参数,也将被作为回调函数的第三个参数接收。
如果回调函数需要直接作用于数组中的值,可以将回调函数第一个参数指定为引用&$array

例子 1
<?php
function myfunction($value,$key) 
{
echo "The key $key has the value $value<br />";
}
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
array_walk($a,"myfunction");
?>
输出:
The key a has the value Cat
The key b has the value Dog
The key c has the value Horse
例子 2
带有一个参数:
<?php
function myfunction($value,$key,$p) 
{
echo "$key $p $value<br />";
}
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
array_walk($a,"myfunction","has the value");
?>
输出:
a has the value Cat
b has the value Dog
c has the value Horse
例子 3
改变数组元素的值(请注意 &$value):
<?php
function myfunction(&$value,$key) 
{
$value="Bird;
}
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
array_walk($a,"myfunction");
print_r($a);
?>
输出:
Array ( [a] => Bird [b] => Bird [c] => Bird )

3.函数array_map(callback callback,array arr[,array....])
此函数跟array_walk()比更加灵活,并且可以处理多个数组。将回调函数作用到给定数组的元素上,返回用户自定义函数作用后的数组。array_map()是任意参数列表函数,回调函数接受的参数数目应该和传递给array_map()函数的数组数目一致。第一个参数必选,用户自定义的函数名称,或者是null。第二个参数也是必选,输入要处理的数组,也可以输入多个数组作为可选参数。
例子 1
<?php
function myfunction($v) 
{
if ($v==="Dog")
	{
	return "Fido";
	}
return $v;
}
$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));
?>
输出:
Array ( [0] => Horse [1] => Fido [2] => Cat )
例子 2
使用多个参数:
<?php
function myfunction($v1,$v2) 
{
if ($v1===$v2)
	{
	return "same";
	}
return "different";
}
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction",$a1,$a2));
?>
输出:
Array ( [0] => different [1] => same [2] => different )
例子 3
请看当自定义函数名设置为 null 时的情况:
<?php
$a1=array("Dog","Cat");
$a2=array("Puppy","Kitten");
print_r(array_map(null,$a1,$a2));
?>
输出:
Array (
[0] => Array ( [0] => Dog [1] => Puppy )
[1] => Array ( [0] => Cat [1] => Kitten )
)



































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值