0

我正在尝试用 PHP 做一个简单的词云练习,但几乎没有什么变化。我已经完成了所有其他事情,但我不知道如何做一个组合单词的循环。

这是一个示例,可以让您更容易理解我正在尝试做的事情:

我有这样的数组:

$arr = array('linebreak','indent','code','question','prefer','we','programming')

现在我正在尝试做一个开始通过该数组并给我这样的数组的函数:

Array( [0] => 'linebreak' [1] => 'linebreak indent' [2] => 'linebreak 缩进代码' )

Array( [0] => '缩进' [1] => '缩进代码' [2] => '缩进代码问题' )

所以基本上它逐个单词地遍历原始单词数组,并制作这些包含 1 到 5 个下一个单词的小数组。

4

3 回答 3

0

递归可能是要走的路。我没有详尽地检查下面的语法。

function descend($arr, $offset=0) {
  global $holder;

  $tmp=array_slice($arr,$offset,5); //limits the result set for each starter word to 5 or fewer children

  foreach($tmp as $word) {
    $val .= ' '.$word;
    $holder[$offset][]=$val;
  }
  $offset++;

  if($offset<count($arr)) descend($arr,$offset);
}

$arr = array('linebreak','indent','code','question','prefer','we','programming');
$holder = descend($arr);
于 2009-11-24T14:54:12.617 回答
0
    $arr = array('linebreak','indent','code','question','prefer','we','programming');
    $val = '';
    foreach($arr as $key=>$value)
    {
        $val .= ' '.$value;
        $newArr[] = $val;
    }

print_r($newArr);
于 2009-11-24T14:11:10.833 回答
0
$a = array('linebreak','indent','code','question','prefer','we','programming');

for($i = 0; $i < count($a); $i++) {
    $p = array();
    for($k = $i; $k < count($a); $k++) {
        $p[] = $a[$k];
        $r[] = implode(' ', $p);
    }
}

print_r($r);
于 2009-11-24T14:47:26.763 回答