感謝大家的熱心回複,對不起大家,之前描述問題的時侯沒有說清楚問題,耽誤了大家的時間。
舉個例子來說明一下:
“重慶”這兩個字,因“重”字是多音字,讀:C、Z;“慶”字讀:Q 要組合出所有讀音就是:CQ,ZQ
那麼,
“重慶重”這樣的話,就應該組合出CQC、ZQC、CQZ、ZQZ 這四種讀音
那麼更多的字會組合出更多的組合
怎麼實現呢?
$arr = array('a','b');$single = array('c','b');function merge(){ $arg = func_get_args(); $r = array(); if(0 < count($arg) && is_array($arg[0])){ $base = $arg[0]; foreach ($arg as $k => $v) { if($k > 0 && is_array($v)){ foreach($base as $sk=>$sv){ foreach ($v as $tk => $tv) { array_push($r, $sv.$tv); } } } } if(0 < count($r)){ return $r; }else{ return !1; } }else{ return !1; }}var_dump(merge($arr, $single));
回複內容:
感謝大家的熱心回複,對不起大家,之前描述問題的時侯沒有說清楚問題,耽誤了大家的時間。
舉個例子來說明一下:
“重慶”這兩個字,因“重”字是多音字,讀:C、Z;“慶”字讀:Q 要組合出所有讀音就是:CQ,ZQ
那麼,
“重慶重”這樣的話,就應該組合出CQC、ZQC、CQZ、ZQZ 這四種讀音
那麼更多的字會組合出更多的組合
怎麼實現呢?
$arr = array('a','b');$single = array('c','b');function merge(){ $arg = func_get_args(); $r = array(); if(0 < count($arg) && is_array($arg[0])){ $base = $arg[0]; foreach ($arg as $k => $v) { if($k > 0 && is_array($v)){ foreach($base as $sk=>$sv){ foreach ($v as $tk => $tv) { array_push($r, $sv.$tv); } } } } if(0 < count($r)){ return $r; }else{ return !1; } }else{ return !1; }}var_dump(merge($arr, $single));
使用一個函數實現:
你的圖片的含義:一個大數組中包含兩個小數組,然後現在給出第三個數組,將其分別組合到大數組的每一個小數組裡面。
實現原理:
數組合并並返回一個新數組的函數:array_merge()。
function merge($a1,$a2,$a3){
$result=array();
$t1=arrar_merge($a1,$a3);
$t2=arrar_merge($a2,$a3);
$result[]=$t1;
$result[]=$t2;
return $result;
}
$item) { $arr[$key][0] = $arr[$key][0].$single[0]; } var_dump($arr);
$answer=array_map(function($subArray)use($third){ return array_merge($subArray,$third);},$first);
手打,勿怪?