在开发中,常常会处理结构如 ['name' => 'Tom', 'age' => 28] 这类关联数组。若我们只关心值,并希望统一转成字符串形式:
$data = ['name' => 'Tom', 'age' => 28];
$formatted = array_map('strval', array_values($data));
print_r($formatted);
输出:
Array
(
[0] => Tom
[1] => 28
)
这个场景中,array_values() 去除了关联键,array_map() 则完成了类型转换。
设想你从用户输入中得到了以下数组,含有多余的空格和不同数据格式:
$input = [
'first' => ' Alice ',
'second' => 'BOB',
'third' => ' charlie '
];
你想要统一小写、去除空格并重建索引数组:
$clean = array_map('trim', array_map('strtolower', array_values($input)));
print_r($clean);
输出:
Array
(
[0] => alice
[1] => bob
[2] => charlie
)
嵌套使用两个 array_map() 来处理每个值,最后再用 array_values() 重新整理索引,结果简洁而清晰。
在对象数组或关联数组列表中,我们常常需要提取某一个字段,比如以下场景中提取用户的 ID:
$users = [
['id' => 101, 'name' => 'Lily'],
['id' => 102, 'name' => 'John'],
['id' => 103, 'name' => 'Mike']
];
$ids = array_values(array_map(function ($user) {
return $user['id'];
}, $users));
print_r($ids);
输出:
Array
(
[0] => 101
[1] => 102
[2] => 103
)
在这种结构化数据中,array_map() 提取键值,array_values() 保证了输出数组的连续性,非常适合用作后续数据处理或前端 JSON 输出。
有时候我们需要根据某些数据字段批量生成带参数的URL,例如根据用户名生成个人资料页面路径:
$names = ['alice', 'bob', 'charlie'];
$urls = array_map(function ($name) {
return 'https://gitbox.net/user/profile/' . urlencode($name);
}, array_values($names));
print_r($urls);
输出:
Array
(
[0] => https://gitbox.net/user/profile/alice
[1] => https://gitbox.net/user/profile/bob
[2] => https://gitbox.net/user/profile/charlie
)
array_map() 用于生成路径字符串,array_values() 则在需要时确保数据是连续索引数组,适合用于JSON响应或传递给前端。
相关标签:
array_values array_map