2014-09-15 2 views
1

나는 그런 배열 뭔가가 :배열 값 쌍을 만드는 방법은 무엇입니까?

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

을 나는 그런 각 값의 쌍을 만들고 싶어 :이 Array (모든 쌍은 같은 배열에 있어야합니다)와 같은

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

. 나는이 질문을 따랐다 그리고

는 :

How do I make pairs of array values?

하지만 난 그렇게 할 수 아니에요.

하여 입력 각각에 대해

+1

안녕하세요 흰색 월터이 : 당신에게 차일 놀이를하고, 알의 당신의 시도 :

$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; } 
Ghost

+0

두 개의 중첩 루프는 매우 간단해야합니다. –

+0

@Ghost 나는 진짜 유령을 두려워하지 않는다. 그러나이 어린이 놀이는 이미 나의 2 시간이 걸렸다. –

답변

4

, IT 및 입력 배열의 끝 사이의 루프를 도와주세요. 각 결과에 대해 현재 입력과 최종 입력 사이의 범위를 결과에 추가하십시오. ,

$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

다음은 평가 링크입니다. 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

는 형식으로 출력 같은데?
+0

답변 해 주셔서 감사합니다. 그리고 그것은 어린이 놀이였습니다;) –

+0

@ShailParas 확실한 남자 walter white hehe에 대한 prob 없음 – Ghost

관련 문제