php如何获取数组下标键值对_php下标键值全取技巧【步骤】
技术百科
看不見的法師
发布时间:2026-01-28
浏览: 次 foreach 遍历是PHP获取数组键值对最自然安全的方式,$key => $value 直接获取键与值;array_keys()和array_values()适合批量提取键或值;each()等指针函数已过时废弃。
直接用 foreach 遍历就能同时拿到键和值
PHP 数组本质就是键值对集合,foreach 是最自然、最安全的取法。不需要额外函数或转换,也不依赖数组是否连续或是否为数字索引。
-
foreach ($arr as $key => $value):这是标准写法,$key自动接收当前元素的下标(可能是字符串或整数),$value接收对应值 - 如果只关心键,可以写成
foreach ($arr as $key => $value)然后忽略$value;反之亦然 - 注意:
foreach按内部指针顺序遍历,不会改变原数组,也不会受nex/
t()
reset()影响
需要所有键或所有值时,用 array_keys() 和 array_values()
当你要一次性提取全部键名或全部值(比如做字段校验、生成 SQL IN 列表、对比结构),这两个函数比循环更简洁。
-
array_keys($arr)返回包含所有键的索引数组;若原数组有重复键(不可能,PHP 数组键唯一),它只保留第一次出现的 -
array_values($arr)返回重排索引后的值数组(即丢弃原键,新数组从0开始递增) - 两者都支持可选第二个参数做「值过滤」,例如
array_keys($arr, 'active', true)可找出所有值等于'active'的键
用 each() 或 key()/current() 是过时且易错的做法
这些函数操作的是数组内部指针,容易在嵌套循环或多次调用中丢失位置,PHP 8.0 已废弃 each(),不建议新代码使用。
-
each()返回一个含key、value、0、1四个键的数组,语义模糊,还移动指针 -
key($arr)和current($arr)只返回当前指针处的键和值,但指针初始位置不一定在开头(尤其在函数传参后) - 如果真要手动移动指针,请用
reset($arr)显式归位,再配合next(),但绝大多数场景没必要
关联数组和索引数组没区别,但要注意键类型对比较的影响
PHP 不区分“关联”或“索引”数组,只有“键是字符串”或“键是整数”的差异。这点在取键值对时看似无关,但在后续处理中常引发隐性 bug。
立即学习“PHP免费学习笔记(深入)”;
- 比如
array_keys([0 => 'a', '0' => 'b'])返回[0, '0']—— 整数0和字符串'0'是两个不同键 - 用
in_array($key, array_keys($arr))判断键是否存在时,记得加严格模式true参数,否则'1'会匹配到整数1 - JSON 编码时,纯数字键会被强制转为字符串,前端解析后可能丢失原始类型意图
isset($arr[$key]) 检查的是键是否存在且值不为 null,而 array_key_exists($key, $arr) 才真正只管键本身存不存在。取键值对本身不难,难的是后续怎么用它们。
# 的是
# 就能
# 这是
# 也不
# 你要
# 不可能
# 不需要
# js
# json
# 循环
# 编码
# 区别
# 指针
# 字符串
# bug
# 键值对
# NULL
# 前端
# foreach
# php
# 遍历
# sql
# 键值
# 是否存在
# 严格模式
# 关联数组
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何使用Golang recover捕获panic
- 如何使用Golang进行HTTP服务性能测试_测量
- Windows的便笺功能如何使用?(桌面备忘技巧)
- 为什么Go建议使用error接口作为错误返回_Go
- C++中引用和指针有什么区别?(代码说明)
- c++怎么调用nana库开发GUI_c++ 现代风
- Python音视频处理高级项目教程_FFmpegP
- php订单日志怎么导出excel_php导出订单日
- Python代码测试策略_质量保障解析【教程】
- Win10 BitLocker加密教程 Win10
- Windows10如何更改鼠标图标_Win10鼠标
- Mac电脑进水了怎么办_MacBook进水后紧急处
- php订单日志怎么按状态筛选_php筛选不同状态订
- VSC怎样在VSC中调试PHPAPI_接口调试技巧
- mac怎么分屏_MAC双屏显示与分屏操作技巧【指南
- Linux如何安装Golang环境_Linux下G
- Win11怎么关闭自动维护 Win11禁用系统自动
- Python邮件系统自动化教程_批量发送解析与模板
- Win10怎样设置多显示器_Win10多显示器扩展
- Windows笔记本无法进入睡眠模式怎么办?(电源
- MAC如何启用访达侧边栏显示_MAC Finder
- GML (Geography Markup Lan
- MAC怎么在照片中添加水印_MAC自带编辑工具文字
- php怎么下载安装并配置环境变量_命令行调用PHP
- Win11怎么更改电脑密码_Windows 11修
- Windows服务无法启动错误1067是什么_进程
- Python并发安全问题_资源竞争说明【指导】
- Windows7如何安装系统镜像_Windows7
- 如何在 Go 中比较自定义的数组类型(如 [20]
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- 如何使用正则表达式提取以编号开头、后跟多个注解的完
- Win11怎么退出微软账户_切换Win11为本地账
- Windows如何拦截腾讯视频广告_Windows
- Golang如何测试HTTP中间件_Golang
- php修改数据怎么批量改状态_批量更新status
- Win11怎么查看激活状态_查询Windows 1
- Linux如何使用Curl发送请求_Linux下A
- Go 语言标准库为何不提供泛型 Contains
- 如何使用Golang模拟请求超时_Golang c
- Win11怎么关闭右下角弹窗_Win11拦截系统通
- Win11怎么调整屏幕亮度_Windows 11调
- Windows10电脑怎么设置自动连接WiFi_W
- Win11怎么设置默认输入法 Win11固定中文输
- MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第
- Windows10电脑怎么查看硬盘通电时间_Win
- Windows10无法识别USB设备描述符请求失败
- Win11怎么清理C盘OneDrive缓存_Win
- Win11怎么关闭应用权限_Windows11相机
- Win11怎么设置默认邮件应用_Windows11
- Win11怎么更改电脑名称_Windows 11修


QQ客服