//存在一个多维数组
//遍历获取到 所有顺序的组合可能
$arrayname = [
'1'=>'A',
'2'=>'B',
'3'=>array('C1','C2'),
'4'=>array('D1','D2'),
'5'=>'E',
'6'=>'F'
];
// arrayname 最后组合的结果是4个字符串:
// A_B_C1_D1_E_F A_B_C1_D2_E_F A_B_C2_D1_E_F A_B_C2_D2_E_F
没有找到好的解决办法 自己使用最笨的方法一个个追加了。哎
<?php
//存在一个多维数组
//遍历获取到 所有顺序的组合可能
$arraynameg = [
'1'=>'A',
'2'=>'B',
'3'=>array('C1','C2'),
'4'=>array('D1','D2'),
'5'=>'E',
'6'=>'F'
];
// arrayname 最后组合的结果是4个字符串:
// A_B_C1_D1_E_F A_B_C1_D2_E_F A_B_C2_D1_E_F A_B_C2_D2_E_F
// 生成后的数组
$newarrg=[];
/*思路:
* 1、遍历数组 拼接字符 保存到 newarr中
* 2、遇到二级数组后 遍历二级数组 拼接新的字符到 newarr中
* 3、直到数组遍历玩 拼接字符到newarr中
*/
function diguiarr($savearr,$readarr){
$newarr = $savearr;
$arrayname = $readarr; //在里面声明为全局变量
$isover = false;
// 变量生成的
if (count($newarr)>0) {
$arritem=[];
$jieindex = 0;//对数组继续截取
foreach ($newarr as $arrkey => $arrval) {
$index = 0;
$arrstr = $arrval;
foreach ($arrayname as $key => $value) {
if (is_array($value)) {
//截取后面的数组
$arritem2=[];
$arrstr2 = '';
foreach ($value as $key2 => $value2) {
$arrstr2 = $arrstr . $value2 . '_';
array_push($arritem, $arrstr2);
}
$jieindex = $index + 1;
break;
}else if( ($index+1) == count($arrayname)){
$arrstr = $arrstr .$value;
array_push($arritem, $arrstr);
// $arrayname=[];
$isover = true;
}else{
$arrstr = $arrstr .$value . '_';
}
$index = $index + 1;
}
//
}
$arrayname = array_slice($arrayname, $jieindex,count($arrayname));
$newarr = $arritem;
}else{
$index = 0;
$arrstr = '';
foreach ($arrayname as $key => $value) {
if (is_array($value)) {
//截取后面的数组
$arritem2=[];
$arrstr2 = '';
foreach ($value as $key2 => $value2) {
$arrstr2 = $arrstr . $value2 . '_';
array_push($newarr, $arrstr2);
}
$index = $index + 1;
$arrayname = array_slice($arrayname, $index,count($arrayname));
break;
}else{
$arrstr = $arrstr .$value . '_';
}
$index = $index + 1;
}
}
// echo "********************";
// var_dump($newarr);
// echo ">>>>>>>>>>>>>>>>>>>>>";
// var_dump($arrayname);
//数组内容为获取完 递归继续获取
//递归获返回值方法
if ($isover == false) {
return diguiarr($newarr,$arrayname);
}else{
return $newarr;
}
}
$newarrg = diguiarr($newarrg,$arraynameg);
var_dump($newarrg);