配列トラバーサルの問題

WBOY
リリース: 2016-06-23 13:44:03
オリジナル
905 人が閲覧しました

$arr=array(	'10'=>array(		'12'=>0	),	'15'=>array(		'30'=>array(			'35'=>0		),		'31'=>array(			'40'=>0		)	))
ログイン後にコピー


上記の配列を使用して、先頭から各ルート ノードへのパスを取得するにはどうすればよいでしょうか?

たとえば、次の結果が得られます:
$a[]='10,12';$a[]='15,30,35';$a[]='15,31,40';
ログイン後にコピー


ディスカッションへの返信 (解決策)

$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);
ログイン後にコピー

$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);
ログイン後にコピー

最后是这样$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));
ログイン後にコピー

$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;}
ログイン後にコピー
Array(    [0] => 10,12    [1] => 15,30,35    [2] => 15,31,40)
ログイン後にコピー

司会者がとても素晴らしいです!昨日、私は再帰を使用することだけを考えましたが、それを理解しませんでした...

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート