带有strpos的php array_udiff函数

时间:2012-12-06 18:34:16

标签: php

我正在使用这段代码来比较两个数组。

<?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函数而不是===运算符来比较两个值,即if(strpos($v1,$v2) === true)。我尝试了这个,但没有工作。任何帮助。 提前谢谢。

2 个答案:

答案 0 :(得分: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 )

答案 1 :(得分:0)

因为你正在使用蛋糕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);