比较两个字符串以查看是否存在模式匹配



我有两个数组一个输出

$a = ( [0] => a [1] => b [2] => b [3] => a )

和其他输出

$b = ( [0] => dog [1] => cat [2] => cat [3] => dog )

如何比较两个数组中的模式。

<?php
$a = array( 0 => 'a' ,1 => 'b', 2 => 'b', 3 => 'a' );
$b = array( 0 => 'dog', 1 => 'cat' ,2 => 'cat' ,3 => 'dog' );
$flagA=0;
$flagB=0;
$pattern=array();
$i=0;
foreach ($a as $array){
    if($array=='a'){
        $pattern[$i]=1;
        $flagA++;
    }
    else{
        $pattern[$i]=0;
        $flagB++;
    }
    $i++;
}
print_r($pattern);

$flagarrayB=0;
$flagarrayC=0;
$testingPatern=array();
$i=0;
foreach ($b as $arrayB){
    if($arrayB=='dog'){
        $testingPatern[$i]=1;
        $flagarrayB++;
    }
    else{
        $testingPatern[$i]=0;
        $flagarrayC++;
    }
    $i++;
}
print_r($testingPatern);
if(serialize($pattern) == serialize($testingPatern)){
    echo "Patern is the same";
}
else{
    echo "Patern is wrong";
}
if($flagA==$flagarrayB && $flagB==$flagarrayC){
    echo "TRUE";
}
else
{
    echo "FALSE";
}

如果您尝试更改数组 $b 中的值,您将看到输出将更改

  • 我修改了我的代码以使用"模式",而不仅仅是元素的外观。我以前的代码如果在数组中$b你用猫狗交换位置,它会返回 true。在这个中,它将返回模式是错误的。我还保留了我以前的代码,以防您想以这种方式使用它。

假设你有这三个数组:

$a = array(0 => 'a',1 => 'b',2 => 'a',3 => 'b');
$b = array(0 => 'a',1 => 'b',2 => 'a',3 => 'b');
$c = array(0 => 'dog',1 => 'cat',2 => 'cat',3 => 'dog');

通过使用运算符比较其值==

$a == $b; //return TRUE
$a == $c; //return FALSE
if($a == $b){//will return TRUE
  //$a has the same values as $b
}
else{
  //$a is different than $b
}

最新更新