生成单词组合

Mor*_*eza 11 php cpu-word

例如,这是我的文字:

$str = 'buy new microsoft windows';
Run Code Online (Sandbox Code Playgroud)

我用文本爆炸文本和列表:

Array
(
    [0] => buy
    [1] => new
    [2] => microsoft
    [3] => windows
)
Run Code Online (Sandbox Code Playgroud)

我想生成数组中的单词,如下所示:

buy new
buy new windows
buy microsoft 
buy microsoft windows
buy windows
new microsoft
new microsoft windows
new windows
microsoft windows
Run Code Online (Sandbox Code Playgroud)

我尝试过foreach和rand,但是我无法生成像展示的那样.有没有机会像我的请求一样生成?

Suj*_*wal 14

你可以看看这个PEAR PACKAGE 示例用法:

<?php
require_once 'Math/Combinatorics.php';
$words = array('buy', 'new', 'microsoft');
$combinatorics = new Math_Combinatorics;
foreach($combinatorics->permutations($words, 2) as $p) {
  echo join(' ', $p), "\n"; 
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

buy new
new buy
buy microsoft
microsoft buy
new microsoft
microsoft new
Run Code Online (Sandbox Code Playgroud)


dec*_*eze 6

shuffle($array);
echo join(' ', array_slice($array, 0, mt_rand(1, count($array))));
Run Code Online (Sandbox Code Playgroud)

这给你一个随机的"句子".根据需要重复.


Pau*_*raj 6

从php.net shuffle 文档中找到

function powerSet($in,$minLength = 1) { 
   $count = count($in); 
   $members = pow(2,$count); 
   $return = array(); 
   for ($i = 0; $i < $members; $i++) { 
      $b = sprintf("%0".$count."b",$i); 
      $out = array(); 
      for ($j = 0; $j < $count; $j++) { 
         if ($b{$j} == '1') $out[] = $in[$j]; 
      }
      $out_val = implode(" ", $out); 
      if (count($out) >= $minLength) { 
         $return[] = $out_val; 
      } 
   } 
   return $return; 
}

print_r(powerSet($str_arr));
Run Code Online (Sandbox Code Playgroud)

结果将是,

Array
(
    [0] => windows
    [1] => microsoft
    [2] => microsoft windows
    [3] => new
    [4] => new windows
    [5] => new microsoft
    [6] => new microsoft windows
    [7] => buy
    [8] => buy windows
    [9] => buy microsoft
    [10] => buy microsoft windows
    [11] => buy new
    [12] => buy new windows
    [13] => buy new microsoft
    [14] => buy new microsoft windows
)
Run Code Online (Sandbox Code Playgroud)