2014-09-15 2 views
1

У меня есть кое-что массив вроде этого:Как сделать пары значений массива?

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?

Но я не в состоянии сделать это.

Пожалуйста, помогите

+1

привет Вальтера белый, это Чайлдс играть вам :), Wheres ваша попытка? – Ghost

+0

Итак, две вложенные петли должны быть довольно простыми. –

+0

@Ghost Я не боюсь реального Призрака, но эта игра для детей уже заняла мои 2 часа. –

ответ

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; 
} 
+0

Вот ссылка на eval: https://eval.in/193497 –

+0

Это не позволяет мне принять ваш ответ, но я это сделаю. и спасибо за ваше драгоценное время. –

+0

http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work Вам нужно подождать 15 минут, прежде чем принимать ответ. Дает каждому другому возможность ответить, возможно, с чем-то лучшим. –

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); 
+0

спасибо за ваш ответ. –

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); 
+0

Спасибо за ваш ответ. и это была детская игра;) –

+0

@ShailParas уверен, что мужчина не пробовал для walter white hehe – Ghost

Смежные вопросы