一 、数组键/值操作有关的函数
1.
array array_values (
array $input ) -- 返回数组中所有的值并给其建立数字索引。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$bbb = array_values($aaa);
-
-
echo '
'
;
-
print_r($bbb);
-
echo '';
-
-
?>
2.
array array_keys (
array $input [,
$search_value [,
bool $strict ]] ) —
返回数组中所有的键名
//返回数组中的数字或者字符串的键名。
//如果指定了可选参数
search_value,则只返回该值的键名。否则
input 数组中的所有键名都会被返回。自 PHP 5 起,可以用
strict 参数来进行全等比较(===)。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$ddd = array_keys($aaa,'1');
-
echo '
'
;
-
print_r($ddd);
-
echo '';
-
-
$eee = array_keys($aaa,'1',true);
-
echo '
'
;
-
print_r($eee);
-
echo '';
-
-
?>
3.
bool in_array (
$needle ,
array $haystack [,
bool $strict ] ) —
检查数组中是否存在某个值
//在
haystack 中搜索
needle,如果找到则返回
TRUE,否则返回
FALSE。
//如果第三个参数
strict 的值为
TRUE 则
in_array() 函数还会检查
needle 的是否和
haystack 中的相同。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
if(in_array(2,$aaa)){
-
echo 'exist
';
-
}else{
-
echo 'not exist
';
-
}
-
-
if(in_array('2',$aaa,true)){
-
echo 'exist
';
-
}else{
-
echo 'not exist
';
-
}
-
-
?>
4.
bool array_key_exists ( $key , array $search ) — 检查给定的键名或索引是否存在于数组中
//array_key_exists() 在给定的 key存在于数组中时返回 TRUE。key可以是任何能作为数组索引的值。array_key_exists()也可用于对象。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
if(array_key_exists(three,$aaa)){
-
echo 'exist
';
-
}else{
-
echo 'not exist
';
-
}
-
?>
5.
array array_flip (
array $trans ) -- 交换数组中的键和值
//
array_flip() 返回一个反转后的
,例如
trans 中的键名变成了值,而
trans 中的值成了键名。
//注意
trans 中的值需要能够作为合法的键名,例如需要是
或者
。如果值的类型不对将发出一个警告,并且有问题的键/值对
将不会反转。
//如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
//
array_flip() 如果失败返回
FALSE。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$bbb = array_flip($aaa);
-
echo '
'
;
-
print_r($bbb);
-
echo '';
-
-
$aaa = array('one'=>1,'one_m'=>1,'one_n'=>1,'two'=>2,'three'=>3);
-
$ccc = array_flip($aaa);
-
echo '
'
;
-
print_r($ccc);
-
echo '';
-
?>
6. array_reverse -- 返回一个单元顺序相反的数组
//
array_reverse() 接受数组
array 作为输入并返回一个单元为相反顺序的新数组,如果
preserve_keys 为
TRUE 则保留原来的键名。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$bbb = array_reverse($aaa);
-
echo '
'
;
-
print_r($bbb);
-
echo '';
-
?>
二、统计数组元素的个数和惟一性
1.
int count (
$var [,
int $mode ] ) —
计算数组中的单元数目或对象中的属性个数 别名 sizeof()
//返回
var 中的单元数目,通常是一个
,任何其它类型都只有一个单元。
-
<?php
-
$aaa = array('one'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
echo count($aaa);
-
?>
2.
array array_count_values (
array $input ) -- 统计数组中所有的值出现的次数
//
array_count_values() 返回一个数组,该数组用
input数组中的值作为键名,该值在
input 数组中出现的次数作为值。
-
<?php
-
$aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$bbb = array_count_values($aaa);
-
echo '
'
;
-
print_r($bbb);
-
echo '';
-
?>
3.
array array_unique (
array $array ) -- 移除数组中重复的值
//
array_unique() 接受
array 作为输入并返回没有重复值的新数组。
//注意键名保留不变。
array_unique()先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的
array 中同一个值的第一个出现的键名会被保留。
-
<?php
-
$aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
$bbb = array_unique($aaa);
-
echo '
'
;
-
print_r($bbb);
-
echo '';
-
?>
三、使用回调函数处理数组的函数
1.
array array_filter (
array $input [,
$callback ] ) 用回调函数过滤数组中的单元
//
array_filter() 依次将
input 数组中的每个值传递到
callback 函数。如果
callback 函数返回
TRUE,则
input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
-
<?php
-
$aaa = array('one'=>1,'one2'=>1,'one3'=>1,'two'=>2,'three'=>3);
-
echo '
'
;
-
print_r($aaa);
-
echo '';
-
-
function even($var){
-
return ($var % 2 == 0);
-
}
-
-
echo '
'
;
-
print_r(array_filter($aaa,even));
-
echo '';
-
?>
2.
bool array_walk (
array &$array ,
$funcname [,
$userdata ] ) 数组中的每个成员应用用户函数
//
成功时返回 TRUE, 或者在失败时返回 FALSE.
//将用户自定义函数 funcname 应用到 array 数组中的每个单元。典型情况下 funcname 接受两个参数。array参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata,将被作为第三个参数传递给 callback funcname。
//如果 funcname 函数需要的参数比给出的多,则每次 array_walk() 调用 funcname时都会产生一个 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 来抑制,或者用 。
-
<?php
-
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
-
-
function alter(&$array,$key,$addDate){
-
$array = $addDate.' '.$array;
-
}
-
-
function cout(&$array,$key){
-
echo $key.'.'.$array.'
';
-
}
-
-
echo '
';
-
array_walk($fruits,cout);
-
echo '
';
-
array_walk($fruits,alter,good);
-
echo '
';
-
array_walk($fruits,cout);
-
-
?>
3.
array array_map (
$callback ,
array $arr1 [,
array $... ] )
//
array_map() 返回一个数组,该数组包含了
arr1 中的所有单元经过
callback 作用过之后的单元。
callback接受的参数数目应该和传递给
array_map() 函数的数组数目一致。
-
<?php
-
function cube($n)
-
{
-
return($n * $n * $n);
-
}
-
-
$a = array(1, 2, 3, 4, 5);
-
$b = array_map("cube", $a);
-
print_r($b);
-
?>
-
function show_Spanish($n, $m)
-
{
-
return("The number $n is called $m in Spanish");
-
}
-
-
function map_Spanish($n, $m)
-
{
-
return(array($n => $m));
-
}
-
-
$a = array(1, 2, 3, 4, 5);
-
$b = array("uno", "dos", "tres", "cuatro", "cinco");
-
-
$c = array_map("show_Spanish", $a, $b);
-
echo '
'
;
-
print_r($c);
-
echo '';
-
-
$d = array_map("map_Spanish", $a , $b);
-
echo '
'
;
-
print_r($d);
-
echo '';
-
$a = array(1, 2, 3, 4, 5);
-
$b = array("one", "two", "three", "four", "five");
-
$c = array("uno", "dos", "tres", "cuatro", "cinco");
-
-
$d = array_map(null, $a, $b, $c);
-
echo '
'
;
-
print_r($d);
-
echo '';
四、数组的排序函数
1. 简单的数组排序
bool sort (
array &$array [,
int $sort_flags ] )
//本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
bool rsort (
array &$array [,
int $sort_flags ] )
//本函数对数组进行逆向排序(最高到最低)。
-
<?php
-
$fruits = array("lemon", "orange", "banana", "apple");
-
sort($fruits);
-
foreach ($fruits as $key => $val) {
-
echo "fruits[".$key."] = " . $val . "
";
-
}
-
-
echo '
';
-
-
rsort($fruits);
-
foreach ($fruits as $key => $val) {
-
echo "fruits[".$key."] = " . $val . "
";
-
}
-
?>
2. 根据键名对数组排序
ksort() krsort()
3. 根据元素的值对数组排序
asort() arsort()
4. 根据“自然数排序”法对数组排序
natsort() natcasesort()
5. 根据用户自定义规则对数组排序
usort() uasort() uksort()
6.多维数组的排序
array_multisort
五、拆分、合并、分解、接合的数组函数
1. array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) — 从数组中取出一段
2. array array_splice ( array &$input , int $offset [, int $length [, array $ replacement ]] ) — 把数组中的一部分去掉并用其它值取代
3. array array_combine ( array $keys , array $values ) — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
4. array array_merge ( array $array1 [, array $array2 [, array $... ]] ) — 合并一个或多个数组
5. array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) — 计算数组的交集
6. array array_diff ( array $array1 , array $array2 [, array $ ... ] ) — 计算数组的差集
六、 数组与数据结构的函数
1. 使用数据实现堆栈
int array_push ( array &$array , $var [, $... ] ) — 将一个或多个单元压入数组的末尾(入栈)
array_pop ( array &$array ) — 将数组最后一个单元弹出(出栈)
2. 使用队列
int array_unshift ( array &$array , $var [, $... ] ) — 在数组开头插入一个或多个单元
array_shift ( array &$array ) — 将数组开头的单元移出数组
void unset ( $var [, $var [, $... ]] ) — 释放给定的变量
七、其它与数据操作有关的函数
array_rand ( array $input [, int $num_req ] ) — 从数组中随机取出一个或多个单元
sbool shuffle ( array &$array ) — 将数组打乱
array_sum ( array $array ) — 计算数组中所有值的和
array range ( $low , $high [, $step ] ) — 建立一个包含指定范围单元的数组
阅读(1562) | 评论(0) | 转发(0) |