數組遍曆有關問題

來源:互聯網
上載者:User
數組遍曆問題
$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
)


------解決思路----------------------
寫了個方法

$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 '
';
}
$str = rtrim( $str, ','.$key);
}

}

foo($arr);

------解決思路----------------------


$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 '
';
}
$str = rtrim( $str, ','.$key);
}

}

foo($arr);

------解決思路----------------------


$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 '
';
}
$str = rtrim( $str, ','.$key);
}

}

foo($arr);

------解決思路----------------------

$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);



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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.