我有一个像这样的数组:
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?
但我无法做到这一点。
请帮助
答案 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);