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
- php485在macos下怎么配置_php485
- Python与OpenAI接口集成实战_生成式AI
- Win11开机Logo怎么换_Win11自定义启动
- Windows10系统怎么查看显卡型号_Win10
- c++中的Tag Dispatching是什么_c
- SAX解析器是什么,它与DOM在处理大型XML文件
- php中::能访问全局变量吗_全局作用域与类作用域
- Mac电脑进水了怎么办_MacBook进水后紧急处
- 如何在Golang中实现自定义Benchmark_
- windows 10应用商店区域怎么改_windo
- Windows10怎么查看系统激活状态_Windo
- 零基础学会Python自动化办公_高效处理Exce
- Win11声音忽大忽小怎么办 Win11音频增强功
- 如何使用Golang log设置日志输出格式_Go
- c++怎么编写动态链接库dll_c++ __dec
- Windows资源管理器总是卡顿或重启怎么办?(修
- Linux怎么修改用户密码_Linux系统pass
- Win11怎么检查TPM2.0模块_Windows
- c++ stringstream用法详解_c++字
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- c++怎么实现大文件的分块读写_c++ 文件指针s
- Win11怎么关闭自动调节亮度_Windows11
- php条件判断怎么写_ifelse和switchc
- 如何在Golang中配置代码格式化工具_使用gof
- Win11怎么关闭系统推荐内容_Windows11
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- C++如何解析JSON数据?(nlohmann/j
- 如何更改Windows资源管理器的默认启动位置?(
- 如何用正则与预处理高效拦截带干扰符的恶意域名
- 如何使用正则表达式批量替换重复的 *- 模式为固定
- Win11如何更改用户账户文件夹名称 Win11修
- 如何在包含多值的列中精准搜索指定演员?
- php错误怎么开启_display_errors与
- Win11怎么关闭自动调节屏幕亮度_Windows
- 如何使用正则表达式精确匹配最多含一个换行符的 st
- LINUX如何删除用户和用户组_Linux use
- Golang如何遍历目录文件_Golang fil
- Win11视频默认播放器怎么改_Win11关联第三
- Win11如何更改任务栏颜色 Win11自定义任务
- Windows蓝屏错误0x00000018怎么处理
- c++如何使用std::bitset进行位图算法_
- php查询数据怎么分组_groupby分组查询配合
- php订单日志怎么记录评价_php记录订单评价日志
- 如何使用Golang table-driven基准
- 如何使用Golang搭建Web开发环境_快速启动H
- 如何有效拦截拼接式恶意域名的垃圾信息
- Win11时间怎么同步到原子钟 Win11高精度时
- Go 中 defer 语句在 goroutine
- Win11怎么修改DNS服务器 Win11设置DN


QQ客服