如果是知道键值,需要查找键名,直接使用array_search()即可.现在反过来,如何操作?

 
(1)array_walk_recursive()加自定义函数查找
 
$arr=array(
'name'=>'zhangsan',
'age' =>'63',
'money'=>array(
'name'=>'lisi'
)
);
 
function my_walk($value,$key){//固定格式,$value表示当前键值,$key表示当前键名
static $name;
if($key=='name'){
$name[]=$value;//压入数组
$GLOBALS['name']=$name;
}
}
array_walk_recursive($arr,'my_walk');
var_dump($GLOBALS['name']) ;
/*
结果:
array(2) {
[0]=>
string(8) "zhangsan"
[1]=>
string(4) "lisi"
}
*/
 
(2)遍历数组进行递归查找
 
 
$arr=array(
'name'=>'zhangsan',
'age' =>'63',
'money'=>array(
'name'=>'lisi'
)
);
function getArray($array, $index) {
if (!is_array($array)) return null;
if (isset($array[$index])) return $array[$index];//递归出口
foreach ($array as $item) {
$return = getArray($item, $index);
if (!is_null($return)) {
return $return;
}
}
return null;
}
 
echo getArray($arr,'name');//打印出结果:zhangsan
上面的getArray()函数只是找到一个键名为'name'的值就返回了,但是如果需要提出相同的多个键名的值,可以这样
 
$arr=array(
'name'=>'zhangsan',
'age' =>'63',
'money'=>array(
'name'=>'lisi'
)
);
function getArray($array, $index) {
static $return;
if (!is_array($array)) return null;
if (isset($array[$index])) $return[]=$array[$index];//接收
foreach ($array as $item) {
getArray($item, $index);
}
return $return;
}
 
var_dump(getArray($arr,'name')) ;
/*
结果:
array(2) {
[0]=>
string(8) "zhangsan"
[1]=>
string(4) "lisi"
}
*/
 
 

php数组array,知道键名如何提取键值的更多相关文章

  1. requests(二): json请求中固定键名顺序&消除键和值之间的空格

    继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定  2.服务端对于接收到的json数据中,若key和value之间有空格, ...

  2. PHP 根据配置转换数组中的键名 方便给前端的时候改键名

    /** * 根据配置转换数组中的键名 * @param array $data 数据,必须为二维数组格式 [0=>[]] * @param array $keyNameMapArr 键名转换配置 ...

  3. php基础知识【函数】(1)数组array

    一.排序 1.sort -- 从最低到最高排序,删除原有的键名,赋予新的键名[字母比数字高] 2.rsort -- 逆向排序(最高到最低),删除原有的键名,赋予新的键名[字母比数字高] 3.asort ...

  4. PHP常用数组(Array)函数整理

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数.数组的分段和填充.数组与栈.数组与列队.回调函数.排序.计算.其他的数组函数等. 一.数组操作的基本函数 数组的键名和值 array_va ...

  5. 【PHP】PHP常用数组(Array)函数整理

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数.数组的分段和填充.数组与栈.数组与列队.回调函数.排序.计算.其他的数组函数等. 一.数组操作的基本函数 数组的键名和值 array_va ...

  6. php 数组Array 删除指定键名值

    if(array_key_exists('keyname',$array)){ //检查数组中此键名是否存在: unset($array['keyname']); //删除后位置仍然保留,但清空了键名 ...

  7. php 获取数组第一个元素 以及最后一个元素 && 最后一个元素的键名

    1. current() 函数返回数组中的当前元素的值. 每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素. end() - 将内部指针指向数组中 ...

  8. php中的常用数组函数(五)(数组中获取键名集合)

    array_keys($arr, $search_value, $strict); --数组中获取键名的集合. //参数1 要检索的数组:参数2 要检索的键值 默认NULL: 参数3 是否严格比较(= ...

  9. php中的常用数组函数(四)(数组中是否有某个键名或索引)

    /***********array_key_exists(检查键名或索引是否在数组中)*****************/ $arr1 = array('name' => 'Sheldon', ...

随机推荐

  1. 关于XMLHttpRequest对象的responseText属性

      下面的代码是利用Ajax实现在输入框中写入一个ID号,即时的从数据库中取得数据并在页面无刷新的情况下显示. Ajax.aspx的代码: <%@ Page Language="C#& ...

  2. 浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异

    本文结合W3School的文档,分析了jQuery中 wrap() wrapAll() 与 wrapInner()的差异,并给出了图文对比教程,非常的简单实用,有需要的朋友可以参考下 今晚看书的时候发 ...

  3. ios9配置info.plist中关于安全访问问题

    打开info.plist文件 - >添加App Transport Security Settings 字典类型,在App Transport Security Settings下增加Allow ...

  4. map循环

    Map<String,  String> maps = new HashMap<String, String>(); maps.put("_id", &qu ...

  5. Javascript 拖拽的一些高级的应用——逐行分析代码,让你轻松了解拖拽的原理

    我们看看之前的拖拽在周围有东西的时候会出现什么问题? 在高级浏览器中不会有啥问题,我们放到IE7下面测试一下,问题就出来了.如图 我们可以很清楚的看到,文字都已经被选中了.那这个用户体验很不好,用起来 ...

  6. struts2笔记12-声明式异常

    1.配置异常处理 <action name="save" class="com.test.actions.ProductAction" method=&q ...

  7. python运维开发(五)----模块、生成器

    内容目录 双层装饰器 字符串格式化 生成器和迭代器 递归 模块 双层装饰器 需求场景介绍: 现有用户登录系统,普通用户能查看自己相关信息的权限,管理员用户能查看所有用户的权限,可以做两个装饰器来实现需 ...

  8. 转发:使用sql命令查询视图中所有引用的基础表

    转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就 ...

  9. 算法分析-leedcode正则题目

    Implement regular expression matching with support for '.' and '*'. 首先这里有个可能大家不知道的地方: if p[0] = '*', ...

  10. JSONObject和JSONArray

    点击下载json工具 点击下载支持jar包 1.从Object到String 要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可 ( ...