PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。 由于 array 的值可以是其它 array 所以树形结构和多维 array 也是允许的。
它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。
定义数组 array()
可以用 array() 语言结构来新建一个 array。它接受任意数量用逗号分隔的 键(key) => 值(value) 对。
$arr = array(
key => value,
key2 => value2,
key3 => value3,
...
)
// 可以用短数组语法 [] 替代 array()
$arr = [
key => value,
key2 => value2,
key3 => value3,
...
]
最后一个数组单元之后的逗号可以省略。key 可以是 integer 或者 string。value 可以是任意类型。
用方括号语法访问数组单元
数组单元可以通过 array[key] 语法来访问。
用方括号的语法新建/修改
可以通过明示地设定其中的值来修改现有的 array 。
这是通过在方括号内指定键名来给 array 赋值实现的。也可以省略键名,在这种情况下给变量名加上一对空的方括号([])。
$arr[key] = value;
$arr[] = value;
// key 可以是 int 或 string
// value 可以是任意类型的值
获取数组的长度 – count() 函数
count() 函数用于返回数组的长度(元素的数量):
遍历数值数组
遍历并打印数值数组中的所有值.
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
删除键值
删除某键值对,对其调用 unset() 函数。
<?php
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // 这与 $arr[13] = 56 相同;
// 在脚本的这一点上
$arr["x"] = 42; // 添加一个新元素
// 键名使用 "x"
unset($arr[5]); // 从数组中删除元素
unset($arr); // 删除整个数组
?>
数组解包
可以使用 [](自 PHP 7.1.0 起)或者 list() 语言结构解包数组。这些结构可用于将数组解包为不同的变量。
$source_array = ['foo', 'bar', 'baz'];
[$foo, $bar, $baz] = $source_array;
echo $foo; // 打印 "foo"
echo $bar; // 打印 "bar"
echo $baz; // 打印 "baz"
?>
$source_array = [
[1, 'John'],
[2, 'Jane'],
];
foreach ($source_array as [$id, $name]) {
// 这里是 $id 和 $name 的逻辑
}
转换为数组
对于任意 int,float, string,bool 和 resource 类型,如果将一个值转换为 array,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array)$scalarValue 与 array($scalarValue) 完全一样。
如果将 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问; 私有变量前会加上类名作前缀;保护变量前会加上一个 ‘*’ 做前缀。这些前缀的前后都各有一个 NUL 字节。 未初始化的类型属性将会被丢弃。
class A {
private $B;
protected $C;
public $D;
function __construct()
{
$this->{1} = null;
}
}
var_export((array) new A());
数组排序
sort() – 对数组进行升序排列
rsort() – 对数组进行降序排列
asort() – 根据关联数组的值,对数组进行升序排列
ksort() – 根据关联数组的键,对数组进行升序排列
arsort() – 根据关联数组的值,对数组进行降序排列
krsort() – 根据关联数组的键,对数组进行降序排列
数组的索引和值操作
$originalArray = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
// 获取所有键
$keys = array_keys($originalArray);
// 获取所有值
$values = array_values($originalArray);
// 组成新的数组
$newArray = array_combine($keys, $values);
print_r($newArray);
检查数组中是否存在某个值
$people = array("one", "two", "three", "four");
if (in_array("one", $people)){
echo "Match found";
}else{
echo "Match not found";
}
添加元素到数组
[] 运算符或 array_push() 函数可以用来添加元素到数组末尾。
$arr[] = 'grape'; // 使用运算符
array_push($arr, 'watermelon'); // 使用函数
删除数组中的元素
unset() 函数删除指定的元素。 array_pop() 移除并返回数组的最后一个元素。 array_shift() 移除并返回数组的第一个元素。
unset($arr[1]); // 删除索引为 1 的元素
$lastElement = array_pop($arr); // 移除最后的元素
$firstElement = array_shift($arr); // 移除第一个元素
合并数组
array_merge() 函数合并一个或多个数组。
$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
$mergedArr = array_merge($arr1, $arr2);
遍历数组
foreach 循环遍历数组元素。
foreach ($arr as $value) {
echo $value;
}
搜索数组
in_array() 检查值是否存在于数组中。 array_search() 查找数组中第一次出现给定值的键名。
if (in_array('apple', $arr)) {
echo "Apple is in the array";
}
$key = array_search('apple', $arr);
获取数组长度
count() 或 sizeof() 函数返回数组中的元素数量。
$length = count($arr);
数组映射
array_map() 函数将回调函数应用到数组的每个元素上。
$newArray = array_map(function($item) {
return strtoupper($item);
}, $arr);
数组过滤
array_filter() 函数用回调函数过滤数组的元素。
$filteredArray = array_filter($arr, function($item) {
return strlen($item) > 4; // 只保留字符串长度大于4的元素
});
这些只是 PHP 中可用的数组操作的一部分。根据你的具体需求,你可能会使用不同的函数或组合多个函数来实现所需的功能。如果你有特定的需求或问题,请告诉我,我可以提供更详细的指导。