2017-10-08 1 views
1

は、だから私は、文字列php - 文字列のすべての類義語バリエーションを取得する方法に関するアドバイスですか?

$string = "funny cat fighting"; 

を持っていると私は、次のような同義語の2D配列があります

$arr = array (
    0 => 
    array (
    0 => 'cat', 
    1 => 'tabby', 
    2 => 'kitty', 
    3 => 'puss' 
), 
    1 => 
    array (
    0 => 'funny', 
    1 => 'haha', 
    2 => 'lol' 
), 
    2 => 
    array (
    0 => 'war', 
    1 => 'fighting' 
) 
) 

がどのように私は例えば、私がしたい、$string "funny cat fighting"のあらゆる可能な同義語の変化を得ることについて行くだろうし出力は文字列の配列になりたい:すべてのバリエーション...

funny cat fighting 
haha cat fighting 
lol cat fighting 
funny tabby fighting 

答えて

1

仮定物事のカップル:

  • あなたないその後、一致する文字列を使用しても意味がありませんすべての単語のすべての順列を探しています。
  • catが最初の配列にあり、funnyが2番目の配列にあるため、配列が若干間違って構成されています。 [OK]を

、あなたの配列を少し微調整して、それは以下のように簡単に行うことができますので、私は言葉が配列でない場合、それをこれと同じに追加しました:

<?php 
$arr = array (
    0 => 
    array (
    0 => 'funny', 
    1 => 'haha', 
    2 => 'lol' 
), 
    1 => 
    array (
    0 => 'cat', 
    1 => 'tabby', 
    2 => 'kitty', 
    3 => 'puss' 
), 
    2 => 
    array (
    0 => 'war', 
    1 => 'fighting' 
) 
); 

$string = "funny cat fighting"; 

$words = explode(' ', $string, 3); 

$result = []; 
foreach ($arr[0] as $a) { 
    if (!in_array($words[0], $arr[0])) { 
     $a = $words[0]; 
    } 
    foreach ($arr[1] as $b) { 
     if (!in_array($words[1], $arr[1])) { 
      $b = $words[1]; 
     } 
     foreach ($arr[2] as $c) { 
      if (!in_array($words[2], $arr[2])) { 
       $c = $words[2]; 
      } 

      if (!in_array($a.' '.$b.' '.$c, $result)) { 
       $result[] = $a.' '.$b.' '.$c; 
      } 
     } 
    } 
} 

print_r($result); 

結果:dog、代わりのcatを使用して​​

Array 
(
    [0] => funny cat war 
    [1] => funny cat fighting 
    [2] => funny tabby war 
    [3] => funny tabby fighting 
    [4] => funny kitty war 
    [5] => funny kitty fighting 
    [6] => funny puss war 
    [7] => funny puss fighting 
    [8] => haha cat war 
    [9] => haha cat fighting 
    [10] => haha tabby war 
    [11] => haha tabby fighting 
    [12] => haha kitty war 
    [13] => haha kitty fighting 
    [14] => haha puss war 
    [15] => haha puss fighting 
    [16] => lol cat war 
    [17] => lol cat fighting 
    [18] => lol tabby war 
    [19] => lol tabby fighting 
    [20] => lol kitty war 
    [21] => lol kitty fighting 
    [22] => lol puss war 
    [23] => lol puss fighting 
) 

結果)https://3v4l.org/ICbZ6

Array 
(
    [0] => funny dog war 
    [1] => funny dog fighting 
    [2] => haha dog war 
    [3] => haha dog fighting 
    [4] => lol dog war 
    [5] => lol dog fighting 
) 

は宿題にこの答えを引用することを忘れないでください; P

+0

はああはい、これは動作します。ありがとう! – Kaiwen

+0

np、喜んで助けてください –

関連する問題