Play Open
Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait

PHP数组的定义和使用(非常详细)

数组(array)是 PHP 中最强大的开发工具之一,与很多编程语言不同的是,PHP 中数组的成员是“键/值”对应的格式,在一些开发环境中常称为 Map、Dictionary 等。

创建数组时,可以使用 array 语句结构,应用格式如下:

$arr = array(key1=>value1, key2=>value2, key3=>value3,...);

其中,数组的多个成员使用逗号分隔;每个成员由=>运算符分为两部分,左侧是成员的名称,也称为键(key),右侧是成员的数据,也称为值(value)。

下面的代码演示了数组的定义和成员访问。

$planet = array("earth"=>"地球","mars"=>"火星");

echo $planet["earth"];

echo "
";

echo $planet["mars"];

?>

代码执行会显示:

地球

火星

本例中定义了 $planet 数组,其中包含两个成员,名称(键)分别是 earth 和 mars。访问成员的数据时,需要在数组对象后的一对方括号中指定相应的名称(键)。需要注意的是,成员的名称(键)是区分字母大小写的,也就是说 Earth 和 earth 是不同的名称,表示不同的数组成员。

PHP 中的数组也可以使用简化形式,即不指定成员的名称(键),此时,成员的名称(键)会自动设置为从 0 开始的整数。下面的代码演示了此类数组的定义和成员访问。

$arr = array("a","b","c");

foreach($arr as $e)

{

echo $e,"
";

}

?>

代码执行会显示 a、b、c。本例通过 foreach 语句遍历了所有的数组成员,下面的代码会通过整数索引访问数组成员。

$arr = array("a","b","c");

$count = count($arr);

for($i=0;$i<$count;$i++)

{

echo $arr[$i],"
";

}

?>

代码中,首先使用 count() 函数获取数组成员的数量;然后通过 for 语句访问了索引值从 0 到成员数量减一的成员。代码执行同样会显示 a、b、c。

从 PHP 5.4 版本开始,可以直接使用一对方括号来定义数组,如下面的代码:

$arr = [1,1,2,3,5,8];

for($i=0; $i<6; $i++)

{

echo $arr[$i],"
";

}

?>

生成数组的成员是连续的数据时(如整数、字母),可以使用 range() 函数,如下面的代码:

print_r(range(1,5));

echo "
";

print_r(range("a","d"));

?>

代码执行结果显示,创建了数字 1 到 5,以及字母 a 到 d 的数组:

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

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

接下来介绍一些常用的数组操作函数。

PHP数组常用函数

count() 和 sizeof() 函数,返回数组中的成员数量。

array_key_exists() 和 key_exists() 函数,判断指定的键是否存在,但在实际应用中,推荐使用 isset() 函数判断数组成员是否存在,如 isset($arr[key])。in_array() 函数判断数组中是否存在指定的值,下面的代码演示了相关的应用。

$arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星");

var_dump(array_key_exists("earth",$arr)); // var_dump(isset($arr[“earth”]));

var_dump(array_key_exists("moon",$arr)); // var_dump(isset($arr["moon"]));

var_dump(in_array("火星",$arr));

var_dump(in_array("月亮",$arr));

?>

代码执行结果为:

bool(true) bool(false) bool(true) bool(false)

此外,in_array() 函数还可以使用第三个参数,默认值为 false,只判断数据的字符串形式是否相同;如果设置为 true,会判断数据的类型和值是否完全一致,如下面的代码。

$arr=range(1,5);

var_dump(in_array("3",$arr));

var_dump(in_array("3",$arr,true));

?>

代码执行结果为:

bool(true) bool(false)

array_change_key_case() 函数将数组中的所有键修改为大写或小写,函数定义格式如下:

array_change_key_case(array $array[, int $case = CASE_LOWER]) : array

其中,参数 $array 指定需要操作的数组;参数 $case 指定键是转换为大写还是小写,默认是小写,转换为大写时使用 CASE_UPPER 常量,函数会返回修改后的数组。

下面的代码演示了 array_change_key_case() 函数的应用。

$arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星");

print_r(array_change_key_case($arr,CASE_UPPER));

?>

代码执行结果为:

Array( [EARTH] => 地球 [MARS] => 火星 [JUPITER] => 木星)

array_key_first() 函数返回数组第一个成员的键,array_key_last() 函数返回数组中最后一个成员的键。下面的代码演示了这两个函数的使用:

$arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星");

echo array_key_first($arr),"
";

echo array_key_last($arr);

?>

执行代码将显示 earth 和 jupiter。

array_keys() 函数可以返回所有键组成的新数组。返回的数组中,成员使用 0 开始的索引,数据为原数组的键。下面的代码演示了 array_keys() 函数的应用:

$arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星");

$keys = array_keys($arr);

print_r($keys);

?>

代码执行结果为:

Array( [0] => earth [1] => mars [2] => jupiter)

array_values() 函数会返回所有的值组成的新数组,新数组成员的键使用从 0 开始的数值索引,下面的代码展示了此函数的应用。

$arr = array("earth"=>"地球","mars"=>"火星","jupiter"=>"木星");

$arr1 = array_values($arr);

print_r($arr);

echo "
";

print_r($arr1);

?>

代码执行结果为:

Array( [earth] => 地球 [mars] => 火星 [jupiter] => 木星)

Array( [0] => 地球 [1] => 火星 [2] => 木星)

array_pad() 函数将数组成员扩充到指定的数量,其定义如下:

array_pad(array $array, int $size, mixed $value) : array

函数的功能是将 $array 成员数量使用 $value 填充到 n 个(n 为 $size 的绝对值)。当 $size 为正数时,新成员填充到原数组成员的后面;当 $size 为负数时,填充到原数组成员的前面;函数会返回修改后的新数组。

下面的代码演示了 array_pad() 函数的应用。

$arr = array("a","b");

$arr1 = array_pad($arr,4,"*");

print_r($arr1);

echo "
";

$arr2 = array_pad($arr,-4,"*");

print_r($arr2);

?>

代码执行结果为:

Array( [0] => a [1] => b [2] => * [3] => *)

Array( [0] => * [1] => * [2] => a [3] => b)

array_replace() 函数使用后续数组成员替换第一个数组的成员,同名(键相同)成员会使用最后一个给出的数据,并会添加第一个数组中不存在(键)的成员。函数会返回重新生成的数组。下面的代码演示了此函数的使用。

$arr1 = [1,2,3];

$arr2 = [1=>1,2=>1];

$arr3 = [1,2,3,4,5];

print_r(array_replace($arr1,$arr2));

echo "
";

print_r(array_replace($arr1,$arr2,$arr3));

?>

代码执行结果为:

Array( [0] => 1 [1] => 1 [2] => 1)

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

本例中,$arr1 数组成员的索引分别是 0、1、2;$arr2 中指定索引 1 和 2 的成员数据都为 1,这样就替换了 $arr1 中的第二和第三成员,第一个输出的数组成员数据就是 1、1、1;第二个输入,$arr3 为最后设置的数组,索引 0、1、2 的成员会替换 $arr1 中的成员,然后添加索引为 3 和 4 的成员。

array_search() 函数在数组中搜索给定的值,如果成功则返回首个对应的键。函数定义如下:

array_search(mixed $needle, array $haystack[, bool $strict = false]) : mixed

函数的功能是在 $haystack 中查找值为 $needle 的成员,并返回它的键。$strict 参数为 true 时,将严格比较值的类型和数据;如果没有找到 $needle 指定的值,函数返回 false。对于函数执行的结果,应使用全等运算符进行判断。

下面的代码演示了 array_search() 函数的使用。

$arr = ["123",456];

$result = array_search(123,$arr);

if($result===false) echo "数据没找到";

else echo $result;

?>

代码执行后会显示 0,即第一个成员的索引值(键)。

Posted in 14年巴西世界杯
Previous
All posts
Next