数组函数

1 array_change_key_case 把数组中所有键(key)更改为小写或大写。

array_change_key_case($arr,CASE_UPPER);
可选参数:
CASE_UPPER      大写
CASE_LOWER      小写

例:
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
print_r(array_change_key_case($age,CASE_UPPER));

结果:Array ( [BILL] => 60 [STEVE] => 56 [MARK] => 31 )

2 array_chunk 把一个数组分割为新的数组块。



array_chunk($arr,size);
array_chunk($arr,size,true);       true - 保留原始数组中的键名。
array_chunk($arr,size,false);      false - 默认。每个新数组块使用从零开始的索引。



例:把数组分割为带有两个元素的数组:
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
print_r(array_chunk($cars,2));

结果:
Array ( 
[0] => Array ( [0] => Volvo [1] => BMW ) 
[1] => Array ( [0] => Toyota [1] => Honda ) 
[2] => Array ( [0] => Mercedes [1] => Opel ) 
)

例2:把数组分割为带有两个元素的数组,并保留原始数组中的键名:
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31","David"=>"35");
print_r(array_chunk($age,2,true));

结果:Array ( 
[0] => Array ( [Bill] => 60 [Steve] => 56 )
 [1] => Array ( [Mark] => 31 [David] => 35 ) 
 )

3 array_column——— 返回输入数组中某个单一列的值。

注释:返回$arr下所有键名为username的值
array_column($arr,'username');
array_column($arr,'username','id');        保留id

例:
$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Jobs',
  )

);

$last_names = array_column($a, 'last_name');
print_r($last_names);

结果:
Array
(
  [0] => Gates
  [1] => Jobs
)



例2:从记录集中取出 last_name 列,用相应的 "id" 列作为键值:

$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Jobs',
  )

);

$last_names = array_column($a, 'last_name', 'id');
print_r($last_names);

结果:
Array
(
  [5698] => Gates
  [4767] => Jobs
)


4 array_combine——— 合并两个数组来创建一个新数组

array_combine($arr1,$arr2);       $arr1做键,$arr2做值

5 array_count_values——— 统计数组中所有值出现的次数。

注释:也就是说数组中的相同的值出现了几次
array_count_values($arr

6 array_diff——— 比较数组键值(value),返回差集

注释:返回$arr1$arr2中不重复的值,$arr1为主体
array_diff($arr1,$arr2);
array_diff($arr1,$arr2,$arr3);

7 array_diff_assoc——— 比较数组的键名(key)和键值(value),返回差集

注释:返回$arr1$arr2中不重复的键名与键值,$arr1为主体
array_diff_assoc($arr1,$arr2);
array_diff_assoc($arr1,$arr2,$arr3);

8 array_diff_key——— 比较数组的键名(key),返回差集

注释:返回$arr1$arr2中不重复的键名,$arr1为主体
array_diff_key($arr1,$arr2);
array_diff_key($arr1,$arr2,$arr3);

9 array_diff_uassoc——— 比较数组的键名(key)和键值(value),返回差集(自定义函数方法)

语法:array_diff_uassoc(数组1,数组2,自定义函数);

function myfunction($a,$b)
{
    if ($a===$b)
    {
        return 0;
    }
    return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("d"=>"red","b"=>"green","e"=>"blue");

$result=array_diff_uassoc($a1,$a2,"myfunction");
print_r($result);

10 array_diff_ukey——— 比较数组的键名(key),返回差集(自定义函数方法)

语法:array_diff_ukey(数组1,数组2,自定义函数);
function myfunction($a,$b)
{
    if ($a===$b)
    {
        return 0;
    }
    return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$result=array_diff_ukey($a1,$a2,"myfunction");
print_r($result);

11 array_fill——— 用给定的键值(value)填充数组。

语法:array_fill(index[起始索引],number[元素数量],value[要填充的值]);

$a1=array_fill(3,4,"blue");
print_r($a1);

12 array_fill_keys——— 用给定的键名(key)填充数组。

注释:这里将$arr作为键,而对应的值就是value
array_fill_keys($arr,value);

$keys=array("a","b","c","d");
$a1=array_fill_keys($keys,"blue");
print_r($a1);

13 array_filter——— 用回调函数过滤数组中的元素。

注释:比较的是ASCLL编码,返回奇数

function test_odd($var)
{
return($var & 1);
}

$a1=array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd"));

结果: 3

14 array_flip——— 反转键名(key)与键值(value)

注释:将值作为键,将键作为值
array_flip($arr);

15 array_intersect——— 比较数组的键值(value),返回交集

注释:返回$arr1$arr2中相同的值,$arr1为主体
array_intersect($arr1,$arr2,$arr3...);

16 array_intersect_assoc——— 比较数组的键名(key)和键值(value),返回交集

注释:返回$arr1$arr2中相同的值,$arr1为主体
array_intersect_assoc($arr1,$arr2,$arr3...);

17 array_intersect_key——— 比较数组的键名(key),返回交集

注释:返回$arr1$arr2中相同的值,$arr1为主体
array_intersect_key($arr1,$arr2,$arr3...);

18 array_intersect_uassoc——— 比较数组的键名(key)和键值(value),返回交集(自定义函数版)

语法:array_intersect_uassoc(数组1,数组2,自定义函数);
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("d"=>"red","b"=>"green","e"=>"blue");

$result=array_intersect_uassoc($a1,$a2,"myfunction");
print_r($result);

19 array_intersect_ukey——— 比较数组的键名(key),返回交集(自定义函数版)

语法:array_intersect_ukey(数组1,数组2,自定义函数);
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$result=array_intersect_ukey($a1,$a2,"myfunction");
print_r($result);

20 array_key_exists——— 检查某个数组中是否存在指定的键名(key)

注释:查询a是否存在$arr的键中
array_key_exists("a",$arr)

21 array_keys——— 返回数组中所有键名(key)

array_keys(array)               返回数组中所有键名
array_keys(array,value)         返回数组中value值的键名
array_keys(array,value,true)    与 value 参数一起使用。可能的值:

true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 "5" 是不同的。
false - 默认值。不依赖类型,数字 5 与字符串 "5" 是相同的。

22 array_map()——— 自定义函数作用到数组中的每个值上,并返回新的值的数组。

注释:数组经过自定义函数的判断后,返回新值
function myfunction($v)
{
return($v*$v);
}

$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));

23 array_merge() ——— 用于把一个或多个数组合并为一个数组。

注释:合并多个数组,如果有相同的键名,后者将会替换前者
array_merge($arr1,$arr2,$arr3...) 

24 array_merge_recursive() ——— 用于把一个或多个数组合并为一个数组。

注释:array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。如果有相同的键名,那就组成一个二维数组

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));

25 array_multisort()——— 返回一个排序数组。

array_multisort(规定数组,可选。规定排列顺序,可选。规定排序类型。);

 规定排列顺序
    SORT_ASC - 默认。按升序排列 (A-Z)。
    SORT_DESC - 按降序排列 (Z-A)。

 规定排序类型
    SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
    SORT_NUMERIC - 把每一项作为数字来处理。
    SORT_STRING - 把每一项作为字符串来处理。
    SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
    SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
    SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

26 array_pad() ——— 将指定数量的带有指定值的元素插入到数组中。

语法:array_pad($arr,size($arr全部的元素个数),"value(要补的元素值)")

如果size=负数,那么value值就会从0开始排序
$a=array("red","green");
print_r(array_pad($a,5,"blue"));

28 array_pop()———删除数组中的最后一个元素。

语法:array_pop(array)

$a=array("red","green","blue");
array_pop($a); 
结果:blue 被删除

29 array_product()———计算并返回数组的乘积。

语法:array_product(array)

$a=array(5,5);
echo(array_product($a));
结果:25

30 array_push()———向数组尾部插入一个或多个元素。

语法:array_push($arr,值1,可选值2...)

$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
结果:blue,yellow被插入到$a数组后面

31 array_rand() ———返回数组中的一个随机键名。

注释:返回$a中随机的3个键名,输出对应键名的值

$a=array("1","2","3","4","5");
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]]."
"
; echo $a[$random_keys[1]]."
"
; echo $a[$random_keys[2]];

32 array_reduce()发送数组中的值到用户自定义函数,并返回一个字符串。

语法:array_reduce(数组,传入的函数,【可选】发送到函数处理的第一个值。)

例1function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction"));

结果:Dog-Cat-Horse

例2function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction",5));          这个5可以不在数组之内
结果:5-Dog-Cat-Horse




例3$b = 10;

function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction",$b));;

结果:10-Dog-Cat-Horse

33 array_replace() 使用第2个数组的值替换第1个数组的值。


语法:array_replace($arr1,$arr2,$arr3...)   

注释:$a2$a1的所有值都替换了,最后一位数组,将替换前面的所有数组


例1$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_replace($a1,$a2));

结果:Array ( [0] => blue [1] => yellow )



例2:
如果第2个数组指定了索引,第1个数组没有指定,那么会按照第2个数组的索引来取出第1个数组对应的键值

$a1=array("1","2","3","5");
$a2=array(0=>"1",3=>"4");
print_r(array_replace($a1,$a2));

输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

34 array_replace_recursive() 递归地使用第2个数组的值替换第1个数组的值。

注释:2维数组都能给你替换掉
语法:array_replace_recursive(数组1,数组2,数组3...)




$a1=array("a"=>array("red"),"b"=>array("green","blue"),);
$a2=array("a"=>array("yellow"),"b"=>array("black"));
print_r(array_replace_recursive($a1,$a2));



array_replace() 与 array_replace_recursive() 之间的不同:

array_replace()     强制替换第2个数组的值
array_replace_recursive()       如果第1个数组存在第2个数组不同的索引,那么结果也包含第一个数组的值

35 array_reverse()返回翻转顺序的数组。

注释:将数组的最后1位变成第1位,将第1位变成最后1位
语法:array_reverse(array,preserve)


preserve:可选
可选。规定是否保留原始数组的键名。
如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。 
可能的值:truefalse

36 array_search()在数组中搜索某个键值(value),并返回对应的键名。(key)

语法:array_search(value,array,strict)

strict 如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。
可能的值:true   false - 默认
如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的。


$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);


37 array_shift()用于删除数组中的第一个元素,并返回被删除的元素。

注释:如果键名是数字的,所有元素都将获得新的键名,从0开始,并以1递增
语法:array_shift(array)

38 array_slice() 返回数组中的选定部分。

语法:array_slice(array,start,length,preserve)

start       规定取出元素的开始位置。如果是正数,刚从前往后取。如果是负数,则从后往前取
length      截取几位
preserve    规定函数是保留键名还是重置键名。可能的值:true - 保留键名   false - 默认。重置键名



$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,2));

39 array_splice() 从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组。

语法:array_splice($arr1,start,length,array2)

$arr1  数组。
start   规定取出元素的开始位置。如果是正数,刚从前往后移除。如果是负数,则从后往前移除
length  规定被移除的元素个数
$arr2    插入$arr1的数组。如果只有一个元素,则可以设置为字符串

提示:如果函数没有移除任何元素(length=0),则替代数组将从 start 参数的位置插入(参见实例 2)。

例1$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
array_splice($a1,0,2,$a2);
结果:Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )


例2:
与前面部分的实例相同,但是输出返回的数组:
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
print_r(array_splice($a1,0,2,$a2));
结果:Array ( [a] => red [b] => green )  
为什么是这两个结果呢?因为他们被移除了,所以出来了


例3:带有设置为 0 的 length 参数:
$a1=array("0"=>"red","1"=>"green");
$a2=array("0"=>"purple","1"=>"orange");
array_splice($a1,1,0,$a2);
print_r($a1);
结果:Array ( [0] => red [1] => purple [2] => orange [3] => green )
译:0就不移除呗,然后插入索引键名为1的,那肯定就是这个答案了

40 array_sum() 返回数组中所有值的和。

语法:array_sum($arr)

$a=array(5,15,25);
echo array_sum($a);
结果:45

41 array_udiff() 用于比较两个(或更多个)数组的键值(value) ,并返回差集。

语法:array_udiff(数组1,数组2,数组3...,自定义函数),像这样的比较,数组1一般都是老大
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$result=array_udiff($a1,$a2,"myfunction");
print_r($result);

结果:Array ( [a] => red [b] => green )

42 array_udiff_assoc() 用于比较两个(或更多个)数组的键名(key)和键值(value),并返回差集。

语法:array_udiff_assoc()(数组1,数组2,数组3...,自定义函数),像这样的比较,数组1一般都是老大

function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");

$result=array_udiff_assoc($a1,$a2,"myfunction");
print_r($result);

43 array_udiff_uassoc() 用于比较两个(或更多个)数组的键名(key)和键值(value),并返回差集。

注释:该函数使用两个用户自定义函数进行比较;第一个函数比较键名,第二个函数比较键值!

语法:array_udiff_uassoc(数组1,数组2,数组3...,自定义函数1,自定义函数2)
自定义函数1  ===    key
自定义函数2  ===    value


function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");

$result=array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);

44 array_uintersect() 用于比较两个(或更多个)数组的键值(value) ,并返回交集。

语法:array_uintersect(array1,array2,array3...,myfunction)

function myfunction($a,$b)
{
        if ($a===$b)
        {
                return 0;
        }
        return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$result=array_uintersect($a1,$a2,"myfunction");
print_r($result);

45 array_uintersect_assoc() 用于比较两个(或更多个)数组的键名(key)和键值(value) ,并返回交集。

语法:array_uintersect_assoc(array1,array2,array3...,myfunction)

function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");

$result=array_uintersect_assoc($a1,$a2,"myfunction");
print_r($result);

46 array_uintersect_uassoc() 用于比较两个(或更多个)数组的键名(key)和键值(value),并返回交集。

注释:该函数使用两个用户自定义函数进行比较;第一个函数比较键名,第二个函数比较键值!
array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)



function myfunction_key($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

function myfunction_value($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");

$result=array_uintersect_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);

47 array_unique() 用于移除数组中重复的值。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。

语法:array_unique(array)
sortingtype:可选
SORT_STRING - 默认。把每一项作为字符串来处理。
SORT_REGULAR - 把每一项按常规顺序排列(Standard ASCII,不改变类型)。
SORT_NUMERIC - 把每一项作为数字来处理。
SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。




$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));

48 array_unshift() 在数组头插入新元素

语法:array_unshift(数组,值1,值2,值3...)

49 array_values()返回包含数组中所有的值的数组。

语法:array_values(array)
提示:被返回的数组将使用数值键,从0开始且以1递增。


$a=array("Name"=>"Peter","Age"=>"41","Country"=>"USA");
print_r(array_values($a));
结果:Array ( [0] => Peter [1] => 41 [2] => USA )

50 array_walk()对数组中的每个元素应用用户自定义函数。在函数中,数组的键名(key)和键值(value)是参数。

语法:array_walk(array,myfunction,parameter...)

例1function myfunction($value,$key)
{
echo "The key $key has the value $value
"
; } $a=array("a"=>"red","b"=>"green","c"=>"blue"); array_walk($a,"myfunction"); 例2: parameter:可选 规定用户自定义函数的参数,您可以为函数设置一个或多个参数。 function myfunction($value,$key,$p) { echo "$key $p $value
"
; } $a=array("a"=>"red","b"=>"green","c"=>"blue"); array_walk($a,"myfunction","的颜色是"); 结果: a的颜色是red b的颜色是green c的颜色是blue 例:3 改变数组元素的值(请注意&$ value): function myfunction(&$value,$key) { $value="yellow"; } $a=array("a"=>"red","b"=>"green","c"=>"blue"); array_walk($a,"myfunction"); print_r($a); 结果:Array ( [a] => yellow [b] => yellow [c] => yellow )

51 array_walk_recursive() 该函数与array_walk()函数的不同在于可以操作更深的数组(一个数组中含有另一个数组)。

语法:array_walk_recursive(array,myfunction,parameter...)

function myfunction($value,$key)
{
echo " $key ----- $value
"
; } $a1=array("a"=>"red","b"=>"green"); $a2=array($a1,"1"=>"blue","2"=>"yellow"); array_walk_recursive($a2,"myfunction"); 结果: a ----- red b ----- green 1 ----- blue 2 ----- yellow

52 arsort()对关联数组按照键值(value)进行降序排序(从高到低排序)。

语法:arsort(array,sortingtype);

sortingtype 可选。规定如何排列数组的元素/项目。
0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

例:
$age=array("a"=>"35","b"=>"37","c"=>"43");
arsort($age);
foreach($age as $k=>$v)
    {
    echo "Key=" . $k . ", Value=" . $v;
    echo "
"
; } 结果: Key=c, Value=43 Key=b, Value=37 Key=a, Value=35

53 asort()对关联数组按照键值(value)进行升序排序(从低到高排序)。

语法:asort(array,sortingtype);

sortingtype 可选。规定如何排列数组的元素/项目。
0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

例:
$age=array("a"=>"35","b"=>"37","c"=>"43");
asort($age);
foreach($age as $k=>$v)
    {
    echo "Key=" . $k . ", Value=" . $v;
    echo "
"
; } 结果: Key=c, Value=43 Key=b, Value=37 Key=a, Value=35

54 compact()创建一个包含变量名($data)和它们的值(value)的数组。

compact(var1,var2...)
var1        必需。可以是带有变量名的字符串,或者是一个变量数组。 
var2,...    可选。可以是带有变量名的字符串,或者是一个变量数组。允许多个参数。



例1$firstname = "Peter";
$lastname = "Griffin";
$age = "41";

$result = compact("firstname", "lastname", "age");

print_r($result);

结果:Array ( [firstname] => Peter [lastname] => Griffin [age] => 41 )


例2:
使用没有对应变量名的字符串,以及一个变量名数组:(就是说,你可以把带有变量名的数组,存到变量里使用)

$firstname = "Peter";
$lastname = "Griffin";
$age = "41";

$name = array("firstname", "lastname");
$result = compact($name, "location", "age");

print_r($result);

55 count()返回数组中元素的个数。

语法:count(array,mode);
mode    可选。规定函数的模式。可能的值:
0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。

56 current()函数返回数组中的当前元素的值

默认指向第0个元素
每个数组中都有一个内部的指针指向它的 “当前” 元素,初始指向插入到数组中的第一个元素。
提示:该函数不会移动数组内部指针。


例:

$people = array("1", "2", "3", "4");

echo current($people) . "
"
; 结果:1

57 each()返回当前元素的键名(value)和键值(value),并将内部指针向前移动。

语法:each(array)

例1:该元素的键名和键值返回到带有四个元素的数组中。两个元素(1和键值)包含键值,两个元素(0和键)包含键名。

$people = array("Peter", "Joe", "Glenn", "Cleveland");
print_r (each($people));

结果:Array ( [1] => Peter [value] => Peter [0] => 0 [key] => 0 )


例2:通过循环输出整个数组

$people = array("Peter", "Joe", "Glenn", "Cleveland");

reset($people);

while (list($key, $val) = each($people))
{
echo "$key => $val
"
; } 结果: 0 => Peter 1 => Joe 2 => Glenn 3 => Cleveland

58 end()将内部指针指向数组中的最后一个元素,并输出。

语法:end(array)

例:
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) . "
"
; echo end($people); 结果: Peter Cleveland

59 extract() 从数组中将变量导入到当前的符号表。

该函数使用数组键名(key)作为变量名,使用数组键值(value)作为变量值。

语法:extract(array,extract_rules,prefix)


extract_rules 可选。函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。对不合法和冲突的键名的处理将根据此参数决定。

EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。
EXTR_SKIP - 如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID - 仅在不合法或数字变量名前加上前缀 prefix。
EXTR_IF_EXISTS - 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。
EXTR_PREFIX_IF_EXISTS - 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS - 将变量作为引用提取。导入的变量仍然引用了数组参数的值。

prefix    可选。如果 extract_rules 参数的值是 EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、 EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS,则 prefix 是必需的。 

该参数规定了前缀。前缀和数组键名之间会自动加上一个下划线。



例2:使用所有的参数:

如果$a与外面$a变量有冲突,那么数组中的a就该加上EXTR_PREFIX_SAME,并且要添加第3个可选值,给它一个前缀名prefix
将键值 "Cat""Dog""Horse" 赋值给变量 $a$b$c$a = "a";
$my_array = array("a" => "aa", "b" => "b", "c" => "c");

extract($my_array, EXTR_PREFIX_SAME, "dup");

echo "$a = $a; $b = $b; $c = $c; $dup_a = $dup_a";


结果:$a = a;$b=b;$c=c;$dup_a = aa;



60 in_array()搜索数组中是否存在指定的值。

bool in_array (mixed $ needle ,array $ haystack [,bool $ strict = FALSE ] )  

needle      必需。规定要在数组搜索的值。
array       必需。规定要搜索的数组。
strict      可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。


例1$people = array("Peter", "Joe", "Glenn", "Cleveland");

if (in_array("Glenn", $people))
{
    echo "Match found";
}
else
{
    echo "Match not found";
}

结果:Match found


例2 使用所有的参数:
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);

if (in_array(23, $people, TRUE))
   {
   echo "Match found
"
; } else { echo "Match not found
"
; } 结果:Match found

61 key()从当前内部指针位置返回元素键名(key)

语法:key(array)

例:
$people=array("Peter","Joe","Glenn","Cleveland");
echo "The key from the current position is: " . key($people);

结果:The key from the current position is: 0

62 krsort()对关联数组按照键名(key)进行降序排序(从高到低)。


语法:krsort(array,sortingtype);


注:如果是键名是字母,则按a-z,A-Z排序


sortingtype 可选。规定如何排列数组的元素/项目。可能的值:

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

例:
$age=array("0"=>"35","1"=>"37","2"=>"43");
krsort($age);

foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "
"
; } 结果: Key=2, Value=43 Key=1, Value=37 Key=0, Value=35

63 ksort()对关联数组按照键名(key)进行升序排序(从低到高)。

语法:ksort(array,sortingtype);


注:如果是键名是字母,则按a-z,A-Z排序


sortingtype 可选。规定如何排列数组的元素/项目。可能的值:

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

例:
$age=array("0"=>"35","1"=>"37","2"=>"43");
ksort($age);

foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "
"
; } 结果: Key=0, Value=35 Key=1, Value=37 Key=2, Value=43

64 list()用于一次操作中给一组变量赋值

语法:list(var1,var2...)
var1            必需。第一个需要赋值的变量。
var2,...        可选。更多需要赋值的变量。

例1$my_array = array("Dog","Cat","Horse");

list($a, $b, $c) = $my_array;
echo "$a, $b ,$c";

结果:Dog,Cat,Horse


例2:使用第一个和第三个变量:
$my_array = array("Dog","Cat","Horse");

list($a, , $c) = $my_array;
echo "$a,$c";

结果:Dog,Horse

65 natcasesort() 用”自然排序”算法对数组进行排序。键值(value)保留它们原始的键名(key)。

在自然排序算法中,数字 2 小于 数字 10。在计算机排序算法中,10 小于 2,因为 "10" 中的第一个数字小于 2。

该函数不区分大小写。(大写和小写分开)
如果成功,该函数返回 TRUE,如果失败则返回 FALSE。

语法:natcasesort(array)


例:

先判断字母大小写,再判断数字大小


$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");


natcasesort($temp_files);
echo "Natural order case insensitve: ";
print_r($temp_files);


结果:
Natural order case insensitve:
Array
(
[2] => temp1.txt
[4] => temp2.txt
[0] => Temp10.txt
[3] => temp15.txt
[1] => Temp22.txt
)

66 natsort()用“自然排序”算法对数组进行排序。键值(value)保留它们原始的键名(key)。

语法:natsort(array)
区分大小写

$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");

natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
echo "
"
; 结果: Natural order: Array ( [0] => Temp10.txt [1] => Temp22.txt [2] => temp1.txt [4] => temp2.txt [3] => temp15.txt )

67 next()将内部指针指向数组中的下一个元素,并输出。

语法:next(array)

例:
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "
"
; echo next($people); 结果: Peter Joe

68 pos()返回数组中的当前元素的值。

该函数是 current() 函数的别名。


例:
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo pos($people) . "
"
; 结果:Peter

69 prev()将内部指针指向数组中的上一个元素,并输出。

$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "
"
; echo next($people) . "
"
; echo prev($people); 结果:Peter

70 range()创建一个包含指定范围的元素的数组。

该函数返回一个包含从低到高之间的元素的数组。

语法:range(low,high,step)
low     必需。规定数组元素的最小值。
high    必需。规定数组元素的最大值。
step    可选。规定元素之间的步进制。默认是 1。

例1$number = range(0,5);
print_r ($number);

结果:Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )



例2$number = range(0,50,10);
print_r ($number);

结果:Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 )



例3$letter = range("a","d");
print_r ($letter);

结果:Array ( [0] => a [1] => b [2] => c [3] => d )

71 reset()函数将内部指针指向数组中的第一个元素,并输出

语法:reset(array)


$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "
"
; echo next($people) . "
"
; echo reset($people); 结果:Peter

72 rsort()函数对数值数组进行降序排序(从高到低)。

语法:rsort(array,sortingtype);
sortingtype 可选。规定如何排列数组的元素/项目。可能的值:

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。


例1$cars=array("Volvo","BMW","Toyota");
rsort($cars);

$clength=count($cars);
for($x=0;$x<$clength;$x++)
   {
   echo $cars[$x];
   echo "
"
; } 结果: Volvo Toyota BMW 例2:这里本人的理解是按照键值上面的数字大小排序的。 把每一项作为数字来处理,并对数组$ cars中的元素进行降序排序: $cars=array("Volvo","BMW","Toyota"); rsort($cars,SORT_NUMERIC); $clength=count($cars); for($x=0;$x<$clength;$x++) { echo $cars[$x]; echo "
"
; } 结果: Toyota BMW Volvo

73 shuffle()函数把数组中的元素按随机顺序重新排列。

语法:shuffle(array)
例1$my_array = array("red","green","blue","yellow","purple");

shuffle($my_array);
print_r($my_array);




该函数为数组中的元素分配新的键名,已存在的键名将被删除

例2$my_array = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"purple");

shuffle($my_array);
print_r($my_array);

74 sizeof()函数返回数组中元素的数目。

sizeof()函数是count()函数的别名。

语法:sizeof(array,mode);
mode    可选。规定函数的模式。可能的值:
0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。


75 sort()函数对索引数组进行升序排序。(从低到高)。

语法:sort(array,sortingtype);

sortingtype 可选。规定如何排列数组的元素/项目。可能的值:

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

例:对数组$numbers数字中的元素按数字进行升序排序:
$numbers=array(4,6,2,22,11);
sort($numbers);

结果:
2
4
6
11
22

76 uasort()使用用户自定义的比较函数对数组按键值(value)进行排序。

语法:uasort(array,myfunction);

myfunction  可选。
一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。



例:
function my_sort($a,$b)
{
if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}

$arr=array("a"=>4,"b"=>2,"c"=>8,d=>"6");
uasort($arr,"my_sort");

foreach($arr as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "
"
; } 结果: Key=b, Value=2 Key=a, Value=4 Key=d, Value=6 Key=c, Value=8

77 uksort()函数使用用户自定义的比较函数对数组按键名(key)进行排序。

语法:uksort(array,myfunction);

myfunction  可选。
一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。

例:
function my_sort($a,$b)
{
if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}

$arr=array("a"=>4,"b"=>2,"c"=>8,d=>"6");
uksort($arr,"my_sort");

foreach($arr as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "
"
; } 结果: Key=a, Value=4 Key=b, Value=2 Key=c, Value=8 Key=d, Value=6

78 usort() 使用用户自定义的比较函数对数组进行排序。

语法:usort(array,myfunction);

myfunction  可选。
一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。


例:
function my_sort($a,$b)
{
if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}

$a=array(4,2,8,6);
usort($a,"my_sort");

$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
   {
   echo $a[$x];
   echo "
"
; } 结果: 2 4 6 8

你可能感兴趣的:(PHP)