如何制作数组值?

时间:2014-09-15 12:22:37

标签: php arrays

我有一个像这样的数组:

array('A','B','C','D','E');

我希望像这样制作每个值的对:

  A, AB, ABC, ABCD, ABCDE
  B, BC, BCD, BCDE
  C, CD, CDE
  D, DE
  E

作为Array(所有配对应该在同一阵列中)。

我已经关注了这个问题:

How do I make pairs of array values?

但我无法做到这一点。

请帮助

3 个答案:

答案 0 :(得分:4)

对于每个输入,在它与输入数组的末尾之间循环。对于每个结果,将当前和结束输入之间的范围添加到结果中。

$input = array('A', 'B', 'C', 'D', 'E');

$output = array();

for ($i = 0; $i < count($input); $i++) {
    $row = array($input[$i]);
    for ($j = $i + 1; $j < count($input); $j++) {
        $row[] = implode('', range($input[$i], $input[$j]));
    }

    $output[] = $row;
}

答案 1 :(得分:1)

$data = array('A','B','C','D','E');
$chars = count($data);

$combinations = array();
foreach ($data as $key => $startChar) {
    $length = 0;
    while ($length < $chars - $key) {
        $combinations[] = implode(array_slice($data, $key, ++$length));
    }
}
var_dump($combinations);

答案 2 :(得分:1)

看起来像格式输出:

$letters = array('A','B','C','D','E');
$result = array();
$x = 0;
while(count($letters) > 0) {
    $l = array_shift($letters);
    $result[$x][] = $l;
    foreach($letters as $k => $letter){
        $result[$x][] = $l . implode(array_slice($letters, 0, $k+1));
    }
    $result[$x] = implode(', ', $result[$x]);
    $x++;
}

echo '<pre>';
print_r($result);