php 数组组合

mkcat 2014-05-14 10:59:49
$set = array('a','b','c','d');

该如何把数组组合,输出的结果是
a
b
c
b
ab
ac
ad
bc
bd
...全文
324 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
天涯过客009 2014-05-19
  • 打赏
  • 举报
回复

$set = array('a','b','c','d');
$arr=array();
for($j=0;$j<sizeof($set);$j++){
    $arr[]=$set[$j];
}
foreach($set as $k=>$v){
    for($i=$k;$i<=(3-$v);$i++){
        if($v==$set[$i]) continue;
        $arr[]=$v.$set[$i];
    }
}
print_r($arr);

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => ab
    [5] => ac
    [6] => ad
    [7] => bc
    [8] => bd
    [9] => cd
)

PhpEr_贵 2014-05-18
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
$set = array('a','b','c','d');
$res = $set;
for($i=0, $p=1; $i<count($res) && isset($set[$p]); $i++, $p++) {
  $res[] = $res[$i] . $set[$p];
}
print_r($res);
Array ( [0] => a [1] => b [2] => c [3] => d [4] => ab [5] => bc [6] => cd )
版主这个输出的和楼主的不一样啊,我没太搞懂楼主到底是要怎么组合输出这个数组,我的解决方法如下,这里不用输出cd就可以了
<?php
$set = array('a','b','c','d');
$len = count($set);
$res = array();
for($i=0,$k=$len;$i<$len;$i++){
  $res[$i] = $set[$i];
  for($j=$i+1;$j<$len;$j++){
    $res[$k++] = $set[$i].$set[$j];
  }
}
ksort($res);
var_dump($res);
?>
array (size=10)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)
  4 => string 'ab' (length=2)
  5 => string 'ac' (length=2)
  6 => string 'ad' (length=2)
  7 => string 'bc' (length=2)
  8 => string 'bd' (length=2)
  9 => string 'cd' (length=2)
xuzuning 2014-05-14
  • 打赏
  • 举报
回复
$set = array('a','b','c','d');
$res = $set;
for($i=0, $p=1; $i<count($res) && isset($set[$p]); $i++, $p++) {
  $res[] = $res[$i] . $set[$p];
}
print_r($res);
Array ( [0] => a [1] => b [2] => c [3] => d [4] => ab [5] => bc [6] => cd )

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧