PHP中的数组
定义数组 array()
可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。
array( key => value
, …
)
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
is_array //判断是不是数组,返回值为布尔型。
in_array //检查数组中是否存在某个值。
array_diff
array_diff//计算数组的差集
array_diff_assoc // 带索引检查计算数组的差集注意和 array_diff() 不同的是键名也用于比较。
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
输出结果为
Array
(
[1] => blue
)
array_intersect
array_intersect//计算数组的交集
array_intersect_assoc — 带索引检查计算数组的交集
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>
输出结果
Array
(
[a] => green
[0] => red
)
array_sum
array_sum//计算数组中所有值的和
<?php
$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "\n";
?>
输出结果
sum(a) = 20
sum(b) = 6.9
array_slice
array_slice — 从数组中取出一段
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
参数
array
输入的数组。
offset
如果 offset 非负,则序列将从 array中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
length
如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
preserve_keys
注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 preserve_keys 设为 TRUE 来改变此行为。
返回值
返回其中一段。
<?php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>
输出结果
Array
(
[0] => c
[1] => d
)
Array
(
[2] => c
[3] => d
)
count
count — 计算数组中的单元数目或对象中的属性个数
int count ( mixed $var [, int $mode = COUNT_NORMAL ] )
统计,数组中元素的个数,默认是统计一维数组元素的个数.
如果$mode=1,可以统计多维数组中所有元素的个数.
foreach
foreach 语法结构提供了遍历数组的简单方式。foreach仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
第一种格式遍历给定的 array_expression数组。每次循环中,当前单元的值被赋给 $value并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
还能够自定义遍历对象。
foreach 遍历的是原数组的一个副本. 不管你怎么操作,不会对原数组造成影响.
如果在遍历的过程,想修改原数组,则在$value前加一个 “&”即可.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>
implode
implode — 将一个一维数组的值转化为字符串
语法: implode(分隔号,数组)
如:implode(‘,’,
arr)//将数组
arr, 转为字符串,并且每个元素之间使用逗号分开.
str_split
语法
str_split($str,[length]) // 默认将第一个字符作为一个数组元素. 可以设置length.
$str=’abcdef’;
str_split($str,2) // 将$str每两个元素作为一个数组元素.
each list
each — 返回数组中当前的键/值对并将数组指针向前移动一步
在执行 each()之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。
返回值
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>
输出结果
Array
(
[1] => bob
[value] => bob
[0] => 0
[key] => 0
)
list
list — 把数组中的值赋给一些变量
$info = array('coffee', 'brown', 'caffeine');
// 列出所有变量
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
// 列出他们的其中一个
list($drink, , $power) = $info;
echo "$drink has $power.\n";
// 或者让我们跳到仅第三个
list( , , $power) = $info;
echo "I need $power!\n";
// list() 不能对字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
?>
使用while each list 遍历二维数组.