我正在从表单中用户给出的输入中创建字符串的可能组合。
例如:字符串:“samsung s duos”;
我必须创建一个组合,例如
samsung
s
duos
samsung s
samsung duos
s duos
组合的顺序应该只从左到右开始。
所以我做的是
$input = $_post['inputstring'];
$productNameSplit = explode(" ",$input);
$cntsplit = count($productNameSplit);
for($i=0; $i<$cntsplit; $i++)
{
echo "<br>";
echo "Part1 : ".$part1= $productNameSplit[$i];
echo "<br><br>";
echo "Part2 :".$part2 = $productNameSplit[$i]." ".$productNameSplit[$i+1]."<br>";
echo "<br>";
echo "Part3 :".$part3 = $productNameSplit[$i+1]." ".$productNameSplit[$i]."<br>";
}
print_r(productNameSplit);
Array ( [0] => samsung [1] => s [2] => duos )
Part1 : samsung
Part2 :samsung s
Part3 :s samsung // i dont want this since s samsung = samsung s
Part1 : s
Part2 :s duos
Part3 :duos s // i dont want this since s duos = duos s
Part1 : duos
Notice: Undefined offset: 3 in Part2 :duos
Notice: Undefined offset: 3 in Part3 : duos
我没有得到'samsung duos'
答案 0 :(得分:0)
尝试这个
$input = "samsung s duos";
$arr_names = explode(" ",$input);
$cnt_names = count($arr_names);
for($i=0; $i<$cnt_names; $i++)
{
echo $arr_names[$i]."<br/>";
for($j=$i+1; $j<$cnt_names; $j++)
{
echo $arr_names[$i]." ".$arr_names[$j]."<br/>";
}
}
输出:
samsung
samsung s
samsung duos
s
s duos
duos
<强> DEMO 强>
答案 1 :(得分:0)
您正在寻找的是电源组,请查看以下帖子: Finding the subsets of an array in PHP
[编辑:] 请注意,此处的其他解决方案不适用于任意大小的组合(我不允许对其进行评论)。
答案 2 :(得分:0)
samsung s
samsung duos
s duos
在这里演示:https://eval.in/170783
function combinaison($array, $level = 0) {
for ($i = $level+1; $i < count($array); $i++)
echo "{$array[$level]} {$array[$i]} \n";
if (isset($array[$level+1]))
combinaison($array, $level+1);
}
combinaison(explode(" ", "samsung s duos"));
function combinaison($array, $level = 0) {
for ($i = $level+1; $i < count($array); $i++)
echo "{$array[$level]} {$array[$i]} \n";
(isset($array[$level+1])) && combinaison($array, $level+1);
}