您的位置:首页 > 编程语言 > PHP开发

php数组array,知道键名如何提取键值

2015-03-22 12:25 337 查看
如果是知道键值,需要查找键名,直接使用array_search()即可.现在反过来,如何操作?

(1)array_walk_recursive()加自定义函数查找

$arr=array(

'name'=>'zhangsan',

'age'=>'63',

'money'=>array(

'name'=>'lisi'

)

);


functionmy_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'

)

);

functiongetArray($array,$index){

if(!is_array($array))returnnull;

if(isset($array[$index]))return$array[$index];//递归出口

foreach($arrayas$item){

$return=getArray($item,$index);

if(!is_null($return)){

return$return;

}

}

returnnull;

}


echogetArray($arr,'name');//打印出结果:zhangsan


上面的getArray()函数只是找到一个键名为'name'的值就返回了,但是如果需要提出相同的多个键名的值,可以这样

$arr=array(

'name'=>'zhangsan',

'age'=>'63',

'money'=>array(

'name'=>'lisi'

)

);

functiongetArray($array,$index){

static$return;

if(!is_array($array))returnnull;

if(isset($array[$index]))$return[]=$array[$index];//接收

foreach($arrayas$item){

getArray($item,$index);

}

return$return;

}


var_dump(getArray($arr,'name'));

/*

结果:

array(2){

[0]=>

string(8)"zhangsan"

[1]=>

string(4)"lisi"

}

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: