fork(2) download
  1. <?php
  2. function buildLevel(array $words, $level) {
  3. // с первым уровнем все просто
  4. if ($level === 1) return [implode(' ', $words)];
  5. if ($level === 2) {
  6. // со вторым чуть по сложнее...
  7. $result = [];
  8. $chunk = [];
  9. while(count($words) >= $level) {
  10. // отделяем первое слово из "строки" и зановим его к первому "слагаемому"
  11. array_push($chunk, array_shift($words));
  12. $result[] = array_merge([implode(' ', $chunk)], [implode(' ', $words)]);
  13. }
  14.  
  15. return $result;
  16. }
  17.  
  18. throw new \Exception(sprintf('Not implemented for level %d for now', $level));
  19. }
  20.  
  21. $words = explode(' ', 'a b c d');
  22. var_dump(buildLevel($words, 1));
  23. var_dump(buildLevel($words, 2));
Success #stdin #stdout 0.02s 20568KB
stdin
Standard input is empty
stdout
array(1) {
  [0]=>
  string(7) "a b c d"
}
array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(5) "b c d"
  }
  [1]=>
  array(2) {
    [0]=>
    string(3) "a b"
    [1]=>
    string(3) "c d"
  }
  [2]=>
  array(2) {
    [0]=>
    string(5) "a b c"
    [1]=>
    string(1) "d"
  }
}