Heim > Backend-Entwicklung > PHP-Tutorial > 数组遍历问题

数组遍历问题

WBOY
Freigeben: 2016-06-23 13:44:03
Original
906 Leute haben es durchsucht

$arr=array(	'10'=>array(		'12'=>0	),	'15'=>array(		'30'=>array(			'35'=>0		),		'31'=>array(			'40'=>0		)	))
Nach dem Login kopieren


有以上这个数组,怎样才能得到从顶端到每一个根节点的路径?

比如最后得到这样的结果:
$a[]='10,12';$a[]='15,30,35';$a[]='15,31,40';
Nach dem Login kopieren


回复讨论(解决方案)

$arr=array('10'=>array('12'=>0),'15'=>array('30'=>array('35'=>0),'31'=>array('40'=>0)));				$a=array();		foreach ($arr as $k=>$v){			$a[$k][]=$k;			if(is_array($v)){				foreach ($v as $kk=>$vv){					$a[$k][]=$kk;				}			}				}		var_dump($a);
Nach dem Login kopieren

$arr=array('10'=>array('12'=>0),'15'=>array('30'=>array('35'=>0),'31'=>array('40'=>0),'33'=>array('42'=>0)));				$a=array();		$i=0;		foreach ($arr as $k=>$v){						$a[$i][]=$k;			if(is_array($v)){				foreach ($v as $kk=>$vv){					$a[$i][]=$kk;					if(is_array($vv)){						foreach ($vv as $kkk=>$vvv){							$j=0;							if($j==0){								unset($a[$i]);								$a[$i.'-'.$i][]=$k;								$a[$i.'-'.$i][]=$kk;								$a[$i.'-'.$i][]=$kkk;							}else{								$a[$i][]=$kkk;							}						}					}					$i++;				}			}			$i++;		}		var_dump($a);
Nach dem Login kopieren

最后是这样$arr=array('10'=>array('12'=>0),'15'=>array('30'=>array('35'=>0),'31'=>array('40'=>0),'33'=>array('42'=>0)));				$a=array();		$i=0;		foreach ($arr as $k=>$v){						$a[$i][]=$k;			if(is_array($v)){				foreach ($v as $kk=>$vv){					$a[$i][]=$kk;					if(is_array($vv)){						foreach ($vv as $kkk=>$vvv){														unset($a[$i]);							$a[$i.'-'.$i][]=$k;							$a[$i.'-'.$i][]=$kk;							$a[$i.'-'.$i][]=$kkk;						}					}					$i++;				}			}		}		var_dump(array_values($a));
Nach dem Login kopieren

$arr=array(  '10'=>array(    '12'=>0  ),  '15'=>array(    '30'=>array(      '35'=>0    ),    '31'=>array(      '40'=>0    )  ));print_r(foo($arr));function foo($ar) {  $res = array();  foreach($ar as $k=>$v) {    if(is_array($v)) {      foreach(foo($v) as $r) $res[] = "$k,$r";    }else $res[] = $k;  }  return $res;}
Nach dem Login kopieren
Array(    [0] => 10,12    [1] => 15,30,35    [2] => 15,31,40)
Nach dem Login kopieren

版主也太牛叉了!昨天我只想到用递归但是没有弄出来…

写了个方法

$arr=array(    '10'=>array(        '12'=>0,        '13'=>array(            '14' => 0,            '16' => array(                '17' =>0            )        )    ),    '15'=>array(        '30'=>array(            '35'=>0        ),        '31'=>array(            '40'=>0        )    ));function foo( $arr, &$str = '' ){    foreach($arr as $key => $value)    {        $str .= "," . $key;        if(is_array($value))        {            foo($value, $str);        }else{            print_r( ltrim($str,',') );            echo '<br>';        }        $str = rtrim( $str, ','.$key);    }}foo($arr);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren


$arr=array(    '10'=>array(        '12'=>0,        '13'=>array(            '14' => 0,            '16' => array(                '17' =>0            )        )    ),    '15'=>array(        '30'=>array(            '35'=>0        ),        '31'=>array(            '40'=>0        )    ));function foo( $arr, &$str = '' ){    foreach($arr as $key => $value)    {        $str .= "," . $key;        if(is_array($value))        {            foo($value, $str);        }else{            print_r( ltrim($str,',') );            echo '<br>';        }        $str = rtrim( $str, ','.$key);    }}foo($arr);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren


$arr=array(    '10'=>array(        '12'=>0,        '13'=>array(            '14' => 0,            '16' => array(                '17' =>0            )        )    ),    '15'=>array(        '30'=>array(            '35'=>0        ),        '31'=>array(            '40'=>0        )    ));function foo( $arr, &$str = '' ){    foreach($arr as $key => $value)    {        $str .= "," . $key;        if(is_array($value))        {            foo($value, $str);        }else{            print_r( ltrim($str,',') );            echo '<br>';        }        $str = rtrim( $str, ','.$key);    }}foo($arr);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

$arr=array(  '10'=>array(    '12'=>0  ),  '15'=>array(    '30'=>array(      '35'=>0    ),    '31'=>array(      '40'=>0    )  ));function my($arr,$pid=10){    static $item=array();    static $s='';    foreach($arr as $k=>$v){         if(is_array($v)){            foreach($v as $key=>$value){                $s.=$key.',';                if(is_array($value)){                    my($value,$k);                }            }         }else{            $s.=$k;         }         $s=$pid.','.$s;         $item[]=$s;         $s='';    }    return $item;}$arr=my($arr);array_pop($arr);print_r($arr);
Nach dem Login kopieren


Array(    [0] => 10,12,    [1] => 15,30,35    [2] => 15,31,40)
Nach dem Login kopieren

太感谢版主了!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage