当前位置: 代码迷 >> PHP >> php 数组结合
  详细解决方案

php 数组结合

热度:80   发布时间:2016-04-28 19:11:33.0
php 数组组合
$set = array('a','b','c','d');

该如何把数组组合,输出的结果是
a
b
c
b
ab
ac
ad
bc
bd
------解决方案--------------------
$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
)

------解决方案--------------------
引用:
$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)

------解决方案--------------------

$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
)

  相关解决方案