2012-03-16 13 views
0

私はこの2つの変数を一定の方法で比較したいと思います。だからすでに私はそれを配列に入れて、それをそのように比較しなければならないことを理解しました。しかし問題があります。配列1に配列2のすべての文字が含まれていることを確認してください。

私の入力が「rieebbb」の場合、ランダムシーケンス。 そして私の他の入力はビールという言葉のような「ビール」です。

ビールの文字がすべて「rieebbb」であり、私はそれらをすべて一度使用しているかどうかを確認するにはどうすればよいですか? 「riebbb」は、ランダムシーケンスで「e」が欠けているため、肯定的な答えを返すべきではありません。各文字の出現をmatch..count

は、私はすでにarray_intersect()を試したが、それはすでに周波数を行いアレイ1

+3

誰かが引っかくヘルパーを作っている... –

+0

あなたは '手紙=>周波数にそれぞれの文字列を変換する場合は行うことが非常に簡単だ言葉「アナグラム」 –

+0

グーグル'地図。 –

答えて

1

で使用される文字をチェックしていなかったので、そのdid'ntはば完全に動作します) "ビール" と言うと、{{B、1}、{E、2}、{R、1}であろう配列A

にそれを格納..

ターゲットに同じ操作を行い文字列。

配列の文字の2つの配列を比較してください。 これで解決するはずです。

ここではそのためのコードです:

<?php 
$data = "beer"; 

$data2="rebe"; 
$p=0; 
$q=0; 
$stat=0; 
foreach (count_chars($data, 1) as $i => $val) 
{ 
    $arr1[$p][0]=chr($i); 
    $arr1[$p][1]=$val; 
    $p=$p+1; 
} 
foreach (count_chars($data2, 1) as $j => $val2) 
{ 
    $arr2[$q][0]=chr($j); 
    $arr2[$q][1]=$val2;  
    $q=$q+1; 
} 

for($st=0;$st<$q;$st=$st+1) 
{ 
     for($sp=0;$sp<$p;$sp=$sp+1) 
     { 
      if($arr2[$st][0]==$arr1[$sp][0]) 
      { 
        if($arr2[$st][1]<$arr1[$sp][1]) 
        { 
          $stat=1; 
        } 
      } 
    } 
} 
if($stat==0) 
{ 
echo "They match"; 
} 
    else 
{ 
echo "They dont match"; 
} 
?> 
+0

それは私を大いに助けましたが、今私はそれらを比較しながら立ち往生しています。 array_intersect_assoc()は私がしたいことをしませんが、私は何が分かるのかわかりません... – Sgarz

+0

うーむ...ブルートフォース!ネストされたforループ.dou本当にコードが必要???そして、組み込み関数の点で考えるだけではなく、これまでにあなたを連れて行くことができます。 – wave5459

+0

可能であれば、コードを見たいと思います。 :) – Sgarz

関連する問題