如果是知道键值,需要查找键名,直接使用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. IIS应用程序池自动回收问题的有效解决办法

    问题:Timer不能持续执行,如果长时间没有访问,就会被IIs自动回收.造成一些定时作业无法完成. 解决方式1:改用windows服务或是winform方式 解决方式2:在Application_En ...

  2. android开发获取网络状态,wifi,wap,2g,3g.工具类(一)

    android开发获取网络状态整理: package com.gzcivil.utils; import android.content.Context; import android.net.Con ...

  3. EXT属性

    Extjs & Ext.Net 弹出整个浏览器对话框的方法 top.Ext.Msg.alert("值"); top.Ext.Msg.confirm("值" ...

  4. JS判断终端浏览器类型

    根据终端浏览器类型不懂加载不同的JS或CSS文件 <script> var browser = { versions: function () { var u = navigator.us ...

  5. CSS3实现漂亮ToolTips

    演示Demo 5种效果的主要css如下: /* transform:向元素应用2D或3D转换; transform-origin属性只有在定义了transform以后才生效 */ .tooltip-e ...

  6. C# 8 函数 调用 常用类 时间 日期型

    函数:能够独立完成某个功能的模块. 好处:1.结构更清析(编写.维护方便 ).2.代码重用.3.分工开发. 四要素:名称,输入(参数),输出(返回的类型),加工(函数体) 语法: 返回类型 函数名(参 ...

  7. JBOSS javax.naming.NameNotFoundException: xxx not bound

    当出现JOBSS部署EJB  xxx not bound 请查看ejb.jar 是否打包完全正常,是不是缺配置文件,一般是缺少配置文件或者打包不正确.

  8. VS2008 自定义向导的default.js设置(DLL文件)

    function OnFinish(selProj, selObj) { try { var strProjectPath = wizard.FindSymbol('PROJECT_PATH'); v ...

  9. View的滑动冲突

    一.常见的滑动冲突 场景1:外部滑动和内部滑动不一致 场景2:外部滑动和内部滑动一致 场景3:上面两种情况的嵌套 二.滑动冲突的处理方法 场景一:根据水平滑动还是竖直滑动判断到底由谁来拦截事件. 场景 ...

  10. 【转】Logistic regression (逻辑回归) 概述

    Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等 ...