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

时间:2017-10-31 13:59:30

标签: php arrays

我有两个阵列一个输出

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

和另一个输出

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

如何比较两个阵列中的模式。

2 个答案:

答案 0 :(得分:1)

假设你有这三个数组:

$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
}

答案 1 :(得分:1)

<?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中你用cat-dog切换它会返回true。在这一个它将返回该模式是错误的。我还保留了以前的代码,以防你想以这种方式使用它。
相关问题