国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php數(shù)組拆分的演算法問題
習(xí)慣沉默
習(xí)慣沉默 2017-05-16 13:08:40
0
2
962

把字串$str = '12,34,5';
拆分成數(shù)組$arr = [[1,3,5],[1,4,5],[2,3,5],[2 ,4,5]];
求把$str轉(zhuǎn)成$arr的php邏輯演算法;

習(xí)慣沉默
習(xí)慣沉默

全部回覆(2)
世界只因有你

說明一下,使用 global 可能看起來不那麼優(yōu)雅,但是這裡我就是寫一個(gè)示例方法,不就過於糾結(jié)啦,可自行優(yōu)化

$str = '12,34,5';
$arr = explode(',', $str);
$step = $book = $result = [];
dfs(0);
print_r($result);


$str = '12,34';
$arr = explode(',', $str);
$step = $book = $result = [];
dfs(0);
print_r($result);

$str = '12,34,5,67';
$arr = explode(',', $str);
$step = $book = $result = [];
dfs(0);
print_r($result);
function dfs($s)
{
    global $arr, $step, $result, $book;
    if (!isset($arr[$s])) {
        $result[] = array_values($step);
        return;
    }

    for ($i = 0; $i < strlen($arr[$s]); $i++) {
        if (!isset($book[$s][$i]) || $book[$s][$i] == 0) {
            $book[$s][$i] = 1;
            $step[$s] = $arr[$s][$i];
            dfs($s + 1);
            $book[$s][$i] = 0;
        }
    }
    return;
}
洪濤

兩個(gè)陣列很好組合,2個(gè)嵌套的for迴圈即可,不確定個(gè)數(shù)的多數(shù)組就沒法這麼處理了,可以參考一些排序演算法的思路,多數(shù)組就透過遞歸其轉(zhuǎn)換為2個(gè)數(shù)組,如:[[1,2],[3,4],[5]],將其轉(zhuǎn)換為[[13,14,23,24],[5]],最後2個(gè)嵌套的for循環(huán)解決,參考代碼:


$str = '12,34,5';
$arr = [];
foreach (explode(',', $str) as $v) {
    $arr[] = str_split($v);
}

print_r(fun($arr));

function fun($arr)
{
    if (count($arr) >= 2) {
        $tmparr = [];
        $arr1 = array_shift($arr);
        $arr2 = array_shift($arr);
        foreach ($arr1 as $v1) {
            foreach ($arr2 as $v2) {
                $tmparr[] = $v1 . $v2;
            }
        }
        array_unshift($arr, $tmparr);
        $arr = fun($arr);
    }
    return $arr;
}

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板