检查数组1是否包含数组2的所有字母

时间:2012-03-16 12:31:49

标签: php arrays

我有两个我希望以某种方式比较的变量。所以我已经想通了,我必须将它放在一个数组中并以这种方式进行比较。但是存在问题。

如果我的输入是'rieebbb',则是随机序列。 我的另一个输入是“啤酒”,啤酒这个词。

如何检查啤酒中的字母是否都在'rieebbb'中并且我都使用过一次? 所以'riebbb'不应该给出肯定答案,因为我在随机序列中错过了'e'。

我已经尝试过array_intersect(),但这并没有完全奏效,因为它没有检查数组1中已经使用过的字母。

1 个答案:

答案 0 :(得分:1)

进行频率匹配。将每个字符的出现称为“啤酒”并将其存储在数组A中。

那将是{{b,1},{e,2},{r,1})..

在目标字符串上执行相同操作。

将两个数组比较为数组A中的字母。 那应该解决它。

以下是相同的代码:

<?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";
}
?>