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; ?>
】
相关推荐
- php和redis连接超时怎么办_phpredis
- 静态属性修改会影响所有实例吗_php作用域操作符下
- Win11文件夹预览图不显示怎么办_Win11缩略
- 如何使用Golang实现跨域请求支持_Golang
- Windows7怎么找回经典开始菜单_Window
- How to Properly Use NumPy
- Windows 11无法安全删除U盘提示设备正在使
- Win11怎么设置任务栏透明_Windows11使
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- Win11怎么制作U盘启动盘_Win11原版系统安
- Mac版Final Cut Pro入门_Mac视频
- Win11如何暂停系统更新 Win11暂停更新最长
- Win11如何连接Xbox手柄 Win11蓝牙连接
- Win10怎样卸载iTunes_Win10卸载iT
- 如何将竖排文本文件转换为横排字符串
- Win11怎么卸载Photos应用_Win11卸载
- Win11怎么设置多显示器任务栏 Win11扩展任
- Win11搜索栏无法输入_解决Win11开始菜单搜
- Windows10如何更改桌面背景_Win10个性
- Go 中实现 Python urllib.quot
- 如何使用Golang defer优化性能_减少不必
- c# 服务器GC和工作站GC的区别和设置
- MAC怎么使用表情符号面板_MAC Emoji快捷
- Win11怎么硬盘分区 Win11新建磁盘分区详细
- Python抽象类与接口设计_规范说明【指导】
- php高频调试功能有哪些_php常用调试函数与工具
- Mac的“调度中心”与“空间”怎么用_Mac多桌面
- c++怎么设置线程优先级与cpu亲和性_c++ 多
- 如何使用Golang构建简易投票统计功能_Gola
- 手机php怎么转mp4_手机端php文件转mp4a
- MAC如何安装Git版本控制工具_MAC开发环境配
- Win11怎么设置默认浏览器Chrome_Wind
- c++怎么使用std::tuple存储多元组数据_
- Windows10如何查看保存的WiFi密码_Wi
- Python文件管理规范_工程实践说明【指导】
- Win11开机自检怎么关闭_跳过Win11开机磁盘
- Win11快速助手怎么用_Win11远程协助连接教
- mac怎么退出id_MAC退出iCloud账号与A
- C#如何使用Channel C#通道实现异步通信
- 如何使用Golang反射创建map对象_动态生成键
- Win11怎么设置快速访问主页_Windows11
- Windows10怎么卸载预装软件_Windows
- 如何在Mac上搭建Golang开发环境_使用Hom
- 如何更改Windows资源管理器的默认启动位置?(
- 如何使用Golang反射将map转换为struct
- Win11怎么设置声音输出设备_Windows11
- 如何有效拦截拼接式恶意域名的垃圾信息
- Win11怎么设置虚拟内存_Windows 11优
- Python函数参数高级用法_默认值与可变参数解析
- Python lxml的etree和Element


QQ客服