0

PHP で簡単なワード クラウドの練習をしようとしていますが、ひねりはほとんどありません。他のすべての作業は完了しましたが、単語を組み合わせたループの実行方法がわかりません。

私がやろうとしていることを少し理解しやすくする例を次に示します。

私はこのような配列を持っています:

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

今、私はその配列を通り始め、次のような配列を与える関数を実行しようとしています:

Array( [0] => '改行' [1] => '改行インデント' [2] => '改行インデント コード' )

Array( [0] => 'indent' [1] => 'indent code' [2] => 'indent code question' )

つまり、基本的には、元の単語配列を単語ごとに調べて、1 から 5 個の次の単語を組み合わせた小さな配列を作成します。

4

3 に答える 3

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 に答える
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 に答える