PHP 多维数组转换一维数组 - php 多维数组下某个键下的值

实例数组

 $arr = [
	 [
	 	'id' => 8,
	 	'mst' => [
	 		'id' => 9,
	 		'mast' => [
	 			'id' => 10
	 		]
	 	]
	 ],
	 [
	 	'id' => 11,
	 	'mst' => [
	 		'id' => 12,
	 		'mast' => [
	 			'id' => 13
	 		]
	 	]
	 ],
	 [
	 	'id' => 14,
	 	'mst' => [
	 		'id' => 15,
	 	]
	 ],
	 [
	 	'id' => 16
	 ]
 ];

获取数组某个键下的所有值

	//获取id
    $arr = $sonCategoriesId->toArray();
    //$result = array_column($arr, 'id');
    $result = $this->re_array($arr, 'id');
    foreach ($result as $k => $v){
        if ($v['key'] === 'id'){
            $res[] = $v['value'];
        }
    }
	
	//输出$res结果为
	//$res = [8,9,10,11,12,13,14,15,16]

将多维数组转换为一维数组

public static function re_array($array, $p_node_deepth=0, $sub_node_deepth=0)
    {
        $out = array();
        foreach($array as $k=>$v){
            if(is_array($v)){
                $tmp = array("key"=>$k, "value"=>"--","deepth"=>$p_node_deepth);
                $out[] = $tmp;
                //数组的话,级联调用
                $out = array_merge($out, self::re_array($v, $sub_node_deepth+1, $p_node_deepth+1));
            }else{
                $tmp = array("key"=>$k, "value"=>$v,"deepth"=>$sub_node_deepth);
                $out[] = $tmp;
            }
        }
        return $out;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值