PHP中遍历数组获取键名与键值有三种方式:一、foreach配合$key => $value语法,适用于关联和索引数组;二、while配合each()(仅php 7.2以下);三、for配合array_keys()和count(),适用于需控制索引顺序的场景。

如果您需要在PHP中遍历数组并同时获取每个元素的键名与键值,则需根据数组类型选择适配的循环结构。以下是几种常用且互不依赖的实现方式:
一、使用foreach循环配合$key => $value语法
该语法专为关联数组和索引数组设计,能直接在每次迭代中提取当前元素的键与值,无需额外函数调用或指针操作。
1、声明一个包含键值对的数组,例如 $arr = [‘name’ => ‘Alice’, ‘age’ => 25, ‘city’ => ‘Beijing’];
2、编写foreach语句:foreach ($arr as $key => $value) { echo “键名:$key,键值:$value
“; }
立即学习“PHP免费学习笔记(深入)”;
3、执行脚本后,每轮循环将输出一行格式为“键名:xxx,键值:yyy”的内容。
二、使用while循环配合each()函数(仅适用于PHP 7.2以下版本)
each()函数返回当前数组指针位置的键值对,并将内部指针前移一位;配合while可逐个读取全部元素,但该函数在PHP 7.2+中已被废弃,仅作兼容性参考。
1、重置数组内部指针:reset($arr);
2、使用while循环:while (list($key, $value) = each($arr)) { echo “键名:$key,键值:$value
“; }
3、注意:PHP 7.2及以上版本无法使用each()函数,运行时将触发致命错误。
三、使用for循环配合array_keys()和count()
该方法先提取全部键名构成索引数组,再通过数值索引访问原数组对应键值,适用于已知数组结构且需严格控制索引顺序的场景。
1、获取键名列表:$keys = array_keys($arr);
2、获取数组长度:$len = count($arr);
3、编写for循环:for ($i = 0; $i “; }
四、使用foreach配合array_keys()单独输出键名再获取值
当需在循环体内对键名进行独立处理(如格式转换、条件过滤)后再取值时,此方式提供更高灵活性。
1、遍历键名数组:foreach (array_keys($arr) as $key) { }
2、在循环体内通过键访问值:$value = $arr[$key];
3、组合输出:echo “键名:$key,键值:$value
“;
五、使用array_walk()回调函数遍历
array_walk()对数组每个元素应用用户自定义函数,自动传入值与键,适合需封装处理逻辑或复用回调的场合。
1、定义回调函数:function print_kv($value, $key) { echo “键名:$key,键值:$value
“; }
2、调用遍历:array_walk($arr, ‘print_kv’);
3、注意:回调函数必须接收两个参数(值在前、键在后),否则键名可能被忽略或报错。