从数组生成单词堆栈

时间:2009-11-24 14:00:35

标签: php arrays tag-cloud

我正在尝试在PHP中进行简单的文字云练习,但几乎没有什么扭曲。我已完成其他所有工作,但我无法弄清楚如何组合单词的循环。

以下示例将使我更容易理解我正在尝试做的事情:

我有这样的数组:

  

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

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

  

阵列(   [0] => '越线'   [1] => 'linebreak indent'   [2] => 'linebreak indent code'   )

     

阵列(   [0] => “缩进”   [1] => '缩进代码'   [2] => '缩进代码问题'   )

所以基本上它逐字逐句地通过原始单词数组,并使这些小数组具有1到5个下一个单词组合。

3 个答案:

答案 0 :(得分:0)

    $arr = array('linebreak','indent','code','question','prefer','we','programming');
    $val = '';
    foreach($arr as $key=>$value)
    {
        $val .= ' '.$value;
        $newArr[] = $val;
    }

print_r($newArr);

答案 1 :(得分: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);

答案 2 :(得分: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);