0
$array1=["joe","bob"];
$array2=["tom","bill"];
$array3=["dan","mary"];

すべての組み合わせを印刷したい.. (joe,tom,dan),( joe,tom,mary) のように、組み合わせごとに各配列から 1 つだけを選択します。というように、組み合わせがなくなるまで続けます。この後、自分のウェブサイトの 3 つの投稿フォームに投稿したいと思います。その方法は知っていますが、この組み合わせ部分に行き詰まっています。

説明するのが難しい..あなたが理解してくれることを願っています..

4

2 に答える 2

0

3 つの for ループを使用できます。

$combinations = new ArrayObject();
foreach ($array1 as $name1) {
    foreach ($array2 as $name2) {
        foreach ($array3 as $name3) {
            $combinations->append(array($name1, $name2, $name3));
        }
    }
}
于 2013-10-28T00:43:45.013 に答える
0

評判が許されないとき

<?php

$array1=["joe","bob"];
$array2=["tom","bill"];
$array3=["dan","mary"];

$arr = array_merge($array1,$array2,$array3);
$result = array();

function noRepeatation($arr, $temp_string, &$collect) {
    if ($temp_string != "") 
        $collect []= $temp_string;

    for ($i=0; $i<sizeof($arr);$i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            noRepeatation($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }   
    }   
}

$collect = array();
noRepeatation($arr, "", $collect);
print_r($collect);
?>

評判が許されるとき

<?php
$array1=["joe","bob"];
$array2=["tom","bill"];
$array3=["dan","mary"];

$arr = array_merge($array1,$array2,$array3);
$result = array();

function repeatation($arr, $level, &$result, $curr=array()) {
    for($i = 0; $i < count($arr); $i++) {
        $new = array_merge($curr, array($arr[$i]));
        if($level == 1) {
            sort($new);
            if (!in_array($new, $result)) {
                $result[] = $new;          
            }
        } else {
            repeatation($arr, $level - 1, $result, $new);
        }
    }
}

for ($i = 0; $i<count($arr); $i++) {
    repeatation($arr, $i+1, $result);
}

foreach ($result as $arr) {
    echo join(" ", $arr) . '<br>';
}
?>
于 2013-10-28T01:24:37.743 に答える