array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
)如何将以上的数组拼接成
a,a-x1,a-x2,a-x3,a-x3-y1,a-x3-y2,a-x3-y3,a-x4,b,b-f1,b-f2,b-f2-t1,b-f2-t2,b-f2-t3,b-f3,b-f4
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
)如何将以上的数组拼接成
a,a-x1,a-x2,a-x3,a-x3-y1,a-x3-y2,a-x3-y3,a-x4,b,b-f1,b-f2,b-f2-t1,b-f2-t2,b-f2-t3,b-f3,b-f4
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);
$arResult = array();
foreach($ar as $k1=> $v1) {
$arResult[] = $k1;
foreach($v1 as $k2=>$v2) {
if (!is_array($v2)) $arResult[] = "{$k1}-{$k2}";
else {
foreach($v2 as $k3=>$v3) $arResult[] = "{$k1}-{$k2}-{$k3}";
}
}
}
echo implode(',',$arResult);
如:
$ar = array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>array(
'l1'=>1,
'l2'=>1
) ),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);
$arResult = array();
foreach($ar as $k1=> $v1) {
$arResult[] = $k1;
foreach($v1 as $k2=>$v2) {
$arResult[] = "{$k1}-{$k2}";
if (is_array($v2)) foreach($v2 as $k3=>$v3) $arResult[] = "{$k1}-{$k2}-{$k3}";
}
}
echo implode(',',$arResult);
//output
//a,a-x1,a-x2,a-x3,a-x3-y1,a-x3-y2,a-x3-y3,a-x4,b,b-f1,b-f2,b-f2-t1,b-f2-t2,b-f2-t3,b-f3,b-f4
如:array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>array(
'l1'=>1,
'l2'=>1,
'l3'=>1
)
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);
$tree = array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);function combine_keys( $arr,$root )
{
static $t = array();
foreach( $arr as $k=>$v)
{
$t[] = !empty($root) ? ($root."-".$k) : $k;
if( is_array($v))
{
keys($v,end($t));
}
}
return $t;
}echo "<pre/>";
print_r(combine_keys( $tree ));
function combine_keys( $arr,$root )
{
static $t = array();
foreach( $arr as $k=>$v)
{
$t[] = !empty($root) ? ($root."-".$k) : $k;
if( is_array($v))
{
combine_keys($v,end($t));
}
}
return $t;
}
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);$t = foo($ar);
echo join(',', $t);function foo($ar, $t=array()) {
$r = array();
foreach($ar as $k=>$v) {
$p = array_merge($t, array($k));
$r[] = join('-', $p);
if(is_array($v)) $r = array_merge($r, foo($v, $p));
}
return $r;
}a,a-x1,a-x2,a-x3,a-x3-y1,a-x3-y2,a-x3-y3,a-x4,b,b-f1,b-f2,b-f2-t1,b-f2-t2,b-f2-t3,b-f3,b-f4
<?php
$arr = array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
) ;function getArrayString($arr, $key) {
global $a;
foreach($arr as $k => $v) {
if ($key != null) {
$a[] = "{$key}-{$k}";
} else {
$a[] = $k;
}
if (is_array($v)) {
getArrayString($v, $k);
}
}
}
$a = array();
getArrayString($arr, null);
var_dump(implode(',', $a));
$ar = array(
'a'=>array(
'x1'=>1,
'x2'=>1,
'x3'=>array(
'y1'=>1,
'y2'=>1,
'y3'=>1
),
'x4'=>1
),
'b'=>array(
'f1'=>1,
'f2'=>array(
't1'=>1,
't2'=>1,
't3'=>1
),
'f3'=>1,
'f4'=>1
)
);function output($pre_str,$ar){
$split = '';
foreach($ar as $k=>$v){
$pre_str && $split = '-';
$strings[] = $pre_str.$split.$k;
if (is_array($v)) $strings = array_merge($strings,output($pre_str.$split.$k,$v));
}
return $strings;
}$strings = output('',$ar);
echo implode(',',$strings);