0

このコードを使用して、2 つの配列を比較しています。

<?php
function myfunction($v1,$v2){
    if ($v1===$v2){
        return 0;
    }
    return 1;
}

$a1 = array("a"=>"Cat", "b"=>"Dog", "c"=>"Horse");
$a2 = array(1=>"Cat", 2=>"Dog", 3=>"Fish");

print_r(array_udiff($a1,$a2,"myfunction"));
?>

この関数は、これらの配列に対してうまく機能します。しかし、演算子の代わりにphp strpos関数を使用===して、2つの値を比較したいif(strpos($v1,$v2) === true). 私はこれを試しましたが、うまくいきませんでした。どんな助けでも。前もって感謝します。

4

2 に答える 2

2

stripos試すことができます(文字列内の大文字と小文字を区別しない部分文字列を見つけるために代わりに使用していることに注意してください)

function myfunction($v1, $v2) {
    if (stripos($v1, $v2) !== false) {
        return 0;
    }
    return 1;
}

$a1 = array("a" => "Cat","b" => "Dog","c" => "Horse");
$a2 = array(1 => "Cat",2 => "Dog",3 => "Fish");

print_r(array_udiff($a1, $a2, "myfunction"));

出力

 Array ( [c] => Horse )
于 2012-12-06T18:45:50.397 に答える
0

Cake 1.3を使用しているため。diff ( http://book.cakephp.org/1.3/en/The-Manual/Core-Utility-Libraries/Set.html#diff ) を使用できます。これはコア ユーティリティであり、非常に便利です。そのマニュアルページには、他の配列関数もあります。

$result = Set::diff($a1, $a2);
print_r($result);
于 2012-12-07T16:48:40.617 に答える