php关联数组是通过字符串或数字作为键来存储对应值的数组结构,和索引数组不同,它的键是自定义的,取值方式也有对应的特点,下面介绍几种常用的取值操作方法。

直接使用键名取值
最直接的方式是通过数组变量加方括号包裹键名的方式获取对应的值,这是最常用的取值方式,前提是键名已经在数组中存在。
<?php
// 定义一个关联数组
$user = [
'name' => '张三',
'age' => 25,
'city' => '北京'
];
// 直接通过键名取值
$name = $user['name'];
$age = $user['age'];
echo $name; // 输出 张三
echo $age; // 输出 25
?>
先判断键是否存在再取值
如果不确定键是否存在就直接取值,会出现未定义索引的警告,因此可以先通过isset函数判断键是否存在,再执行取值操作。
<?php
$user = [
'name' => '张三',
'age' => 25
];
// 判断键是否存在
if (isset($user['city'])) {
$city = $user['city'];
echo $city;
} else {
echo '键city不存在';
}
?>
使用array_key_exists检查键存在性
array_key_exists函数也可以用来检查关联数组的键是否存在,和isset的区别是,当键对应的值为null时,isset会返回false,而array_key_exists仍然返回true。
<?php
$user = [
'name' => '张三',
'age' => null
];
// 使用isset判断
var_dump(isset($user['age'])); // 输出 bool(false)
// 使用array_key_exists判断
var_dump(array_key_exists('age', $user)); // 输出 bool(true)
// 取值操作
if (array_key_exists('age', $user)) {
$age = $user['age'];
var_dump($age); // 输出 NULL
}
?>
遍历关联数组获取所有值
如果需要获取关联数组中的所有值,可以使用foreach循环遍历数组,同时获取键和对应的值。
<?php
$user = [
'name' => '张三',
'age' => 25,
'city' => '北京'
];
// 遍历关联数组
foreach ($user as $key => $value) {
echo '键:' . $key . ',值:' . $value . '<br>';
}
// 如果只需要获取所有值,也可以只遍历值
foreach ($user as $value) {
echo $value . '<br>';
}
?>
使用array_values获取所有值的索引数组
如果需要将关联数组的所有值提取出来,组成一个新的索引数组,可以使用array_values函数,该函数会返回包含关联数组所有值的索引数组。
<?php
$user = [
'name' => '张三',
'age' => 25,
'city' => '北京'
];
// 获取所有值的索引数组
$values = array_values($user);
print_r($values);
// 输出 Array ( [0] => 张三 [1] => 25 [2] => 北京 )
?>
取值注意事项
- 关联数组的键名区分大小写,比如
$user['Name']和$user['name']是不同的键。 - 取值时如果键名是字符串,需要用单引号或双引号包裹,不要用未定义的常量作为键名,否则会触发警告。
- 尽量避免未判断键是否存在就直接取值,减少不必要的警告信息,提升代码的规范性。