数组转换成字符串递归算法

一维的可以直接用implode函数

<?php $ar = array (1,2,3,4,5); $b=implode('',$ar); echo $b; ?>

二维或者多维的就没效果了,三维的可以用foreach循环出来。

 $arr=array(a1,a2,a3,a4,array(a11,a12,a13,a14,array(a111,a112,a113,a114),a15,a16),a6,a7); echo "<pre>"; foreach ($arr as $v) { if (!is_array($v)) { $file[]=$v; }else { foreach ($v as $v1) { if (!is_array($v1)) { $file[]=$v1; }else { foreach ($v1 as $v2){ if (!is_array($v2)) { $file[]=$v2; } } } } } } print_r($file); $str=implode(' ',$file); echo $str;

但是上式只适用于三维的,有没有更smart的呢?递归!

<?php function toarr($arr){ foreach ($arr as $k=>$v){ if (!is_array($v)) { $str.=" ".$v; } else { $str.=toarr($v); } } return $str; } //$arr=array(1,2,array(5,6,8)); $arr=array(a1,a2,a3,a4,array(a11,a12,a13,array(a111,a112,a113,a114)),a5,array(a21,a22,a23,array(a211,a212,array(a1111,a1112,a1113))),a6); $file=toarr($arr); echo $file; ?>

上式把多维的数组转化成字符串了,那么多维的转化成一维数组是不是就简单了,只需要把上式的结果用explode函数分拆一下就成一维数组了。但是又想到了一个复杂点的问题-两个多维数组的元素交叉显示在一维数组里,同维度可能还好弄点,但是不同维度的呢?研究研究...

你可能感兴趣的:(算法,File)