龙空技术网

PHP 一些重要的数组操作函数

乐创物联 167

前言:

此刻咱们对“php参数数组”都比较关切,同学们都想要知道一些“php参数数组”的相关资讯。那么小编也在网上搜集了一些关于“php参数数组””的相关内容,希望兄弟们能喜欢,大家一起来学习一下吧!

1.数组排序函数

1)sort

定义和用法

sort() 函数对索引数组进行升序排序。

注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。

如果成功则返回 TRUE,否则返回 FALSE。

提示:请使用 rsort() 函数对索引数组进行降序排序。

语法

sort(array,sortingtype);

参数 描述

array 必需。规定要进行排序的数组。

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 对字符串进行排序,不区分大小写。

返回值: 若成功则返回 TRUE,若失败则返回 FALSE。

例:sort.php

<?php

$fruits = array("orange", "banana", "apple");//定义一个数组

sort($fruits);//默认常规排序

foreach ($fruits as $key => $value) {//foreach 方式遍历数组

echo "fruits[$key] = $value <br>";//打印数组

}

$num = array("11", "2", "1");//定义一个数组

sort($num);//按照数字排序

foreach ($num as $key => $value) {//foreach 方式遍历数组

echo "num[$key] = $value <br>";//打印数组

}

sort($num,SORT_STRING);//按照字符串排序

foreach ($num as $key => $value) {//foreach 方式遍历数组

echo "num[$key] = $value <br>";//打印数组

}

?>

结果:

注“11”排在“2”之前

2)asort与ksort

定义和用法

asort() 函数对关联数组按照键值进行升序排序。

提示:请使用 arsort() 函数对关联数组按照键值进行降序排序。

提示:请使用 ksort() 函数对关联数组按照键名进行升序排序。

语法

asort(array,sortingtype);

参数 描述

array 必需。规定要进行排序的数组。

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 对字符串进行排序,不区分大小写

说明

asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。

可选的第二个参数包含了附加的排序标识。

如果成功则返回 TRUE,否则返回 FALSE。

返回值: 如果成功则返回 TRUE,如果失败则返回 FALSE。

例:asort.php

<?php

$array = array("a" => "y", "c" => "x", "b" => "z");//定义一个字符串数组

asort($array);//按照数组索引升序排序

foreach ($array as $key => $value) {//foreach遍历循环打印数组

echo "array['$key'] = $value <br>";

}

ksort($array);//按照数组索引升序排序

foreach ($array as $key => $value) {//foreach遍历循环打印数组

echo "array['$key'] = $value <br>";

}

?>

结果:

注:降序这函数前加个‘r’,例如rsort 、arsort 、krsort。

3)array_reverse

定义和用法

array_reverse() 函数以相反的元素顺序返回数组。

说明

array_reverse() 函数将原数组中的元素顺序翻转,创建新的数组并返回。

如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

语法

array_reverse(array,preserve)

参数 描述

array 必需。规定数组。

preserve

可选。规定是否保留原始数组的键名。

可能的值:

true

false

返回值: 返回反转后的数组。

例:array_reverse.php

<?php

$array = array("x", "y", "z");//定义一个数组

$result = array_reverse($array);//将数组顺序相反排序

echo "<pre>";

print_r($result);//打印数组

$result = array_reverse($array, TRUE);//保留原来元素原来的索引,相反排序

print_r($result);

?>

结果:

2.自定义排序函数usort

1)usort

定义和用法

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

语法

usort(array,myfunction);

参数 描述

array 必需。规定要进行排序的数组。

myfunction 可选。定义可调用比较函数的字符串。如果第一个参数小于等于或大于第二个参数,那么比较函数必须返回一个小于等于或大于 0 的整数。

说明

usort() 函数使用用户自定义的函数对数组排序。

注释:如果两个元素比较结果相同,则它们在排序后的数组中的顺序未经定义。到 PHP 4.0.6 之前,用户自定义函数将保留这些元素的原有顺序。但是由于在 4.1.0 中引进了新的排序算法,结果将不是这样了,因为对此没有一个有效的解决方案。

注释:本函数为 array 中的元素赋予新的键名。这会删除原有的键名。

返回值: 若成功则返回 TRUE,若失败则返回 FALSE。

2)cmp

函数cmp中返回值可以任意指定,只要保证返回值中包含0、正数、负数三种类型即可。

例:usort.php

<?php

function cmp($a,$b) { //创建一个cmp比较函数

if ($a == $b) //如果 变量$a = 变量$b

return 0; //返回值 为 0

else if($a > $b) //如果 变量$a > 变量$b

return -10;//返回值 为 -10

else //如果 变量$a < 变量$b

return 9; //返回值 为 9

}

$array = array(7,5,15,20,1); //定义一个数组

usort($array, 'cmp'); //按照从大到小排序

echo "<pre>";

print_r($array); //打印数组

echo "</pre>";

?>

结果:

3.数组随机排序函数shuffle

定义和用法

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

该函数为数组中的元素分配新的键名。已有键名将被删除。

语法

shuffle(array)

参数 描述

array 必需。规定要使用的数组。

返回值: 若成功则返回 TRUE,若失败则返回 FALSE。

例:shuffle.php

<?php

$array = array('a', 'c', 'b', 'd');//定义一个数组

shuffle($array);//随机生成一个数组

foreach($array as $key => $value) {//foreach方式遍历打印数组

echo "array[$key] = $value <br>";

}

?>

结果:

4.数组遍历函数array_walk

定义和用法

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

注释:您可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值。

提示:如需操作更深的数组(一个数组中包含另一个数组),请使用 array_walk_recursive() 函数。

语法

array_walk(array,myfunction,userdata...)

参数 描述

array 必需。规定数组。

myfunction 必需。用户自定义函数的名称。

userdata,... 可选。规定用户自定义函数的参数。您能够向此函数传递任意多参数。

说明

array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。

典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。

如果 myfunction 函数需要的参数比给出的多,则每次 array_walk() 调用 myfunction 时都会产生一个 E_WARNING 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 @ 来抑制,或者用 error_reporting()。

注释:如果回调函数需要直接作用于数组中的值,可以将回调函数的第一个参数指定为引用:&$value。(参见例子 3)

注释:将键名和 userdata 传递到 myfunction 中是 PHP 4.0 新增加的。

返回值: 如果成功则返回 TRUE,否则返回 FALSE。

例:array_walk.php

<?php

$array = array("c" => "x","a" => "y","b" => "z");//定义一个字符串索引数组

function print_bold(&$value, $key, $prefix)//定义一个函数,包含三个形参

{

$value = "$prefix[0] $value $prefix[1]";

echo "array['$key'] = $value <br>";

}

function print_str($value, $key)//定义一个函数,包含两个形参

{

echo "array['$key'] = $value <br>";

}

echo "格式化输出:<br>";

array_walk($array, 'print_str');//格式化输出

array_walk($array, 'print_bold', array('<b><i>','</i></b>'));//格式化输出

?>

结果:

5.数组判断函数

1)check.php

<?php

find_str('y');//调用函数find_str()

function find_str($x) { //定义一个函数 形参为$x

$array = array('x','y','z'); //定义一个数组

foreach($array as $key => $value) { //foreach方式遍历 循环查找数组

if($x == $value) { //$x = $value 是否与传入参数相等

echo "$value is in array."; //打印y is in array.

break; //返回

}

}

}

?>

结果:

2)in_array

定义和用法

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

语法

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

参数 描述

needle 必需。规定要在数组搜索的值。

haystack 必需。规定要搜索的数组。

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

返回值: 如果在数组中找到值则返回 TRUE,否则返回 FALSE。

例:in_array.php

<?php

find_str('y'); //调用函数find_str()

function find_str($x) { //定义一个函数 形参为$x

$array = array('x','y','z');//定义一个数组

if(in_array($x,$array)) { //检查数组中是否存在 $x

echo "$x is in array."; //打印 y is in array.

}

}

?>

结果:

3)array_key_exists

定义和用法

array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。

提示:请记住,如果您指定数组的时候省略了键名,将会生成从 0 开始并且每个键值对应以 1 递增的整数键名。

语法

array_key_exists(key,array)

参数 描述

key 必需。规定键名。

array 必需。规定数组。

返回值: 如果键名存在则返回 TRUE,如果键名不存在则返回 FALSE。

例:array_key_exists.php

<?php

$array = array('x' => null, 'y' => 'a', 'z' => 'b'); //定义一个数组

var_dump($array );//打印数组

echo array_key_exists('x', $array);// 索引对应为空,返回TRUE

echo array_key_exists('y', $array);// 索引对应为键名存在,返回TRUE

?>

结果:

4)array_search

定义和用法

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

详细说明

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。

如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。

语法

array_search(value,array,strict)

参数 描述

value 必需。规定需要搜素的键值。

array 必需。规定被搜索的数组。

strict

可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:

true

false - 默认

如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的

返回值:

如果在数组中找到指定的键值,则返回对应的键名,否则返回 FALSE。

如果在数组中找到键值超过一次,则返回第一次找到的键值所匹配的键名。

例:array_search.php

<?php

$array = array('a' => 'x', 'b' => 'y', 'c' => 'z');//定义一个字符串索引数组

var_dump($array);//打印数组

echo array_search('x', $array);//查找键值有存在,返回键名

echo array_search('a', $array); //查找键值有存在,不返回

?>

结果:

标签: #php参数数组