2012-12-06 22 views
0

我正在使用這段代碼來比較兩個數組。帶有條紋的php array_udiff函數

<?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)。我試過但不工作。任何幫助。 在此先感謝。

+0

'strpos'用於字符串,而不是數組。你傳遞給'myfunction'的變量是什麼? – crowjonah

+0

@crowjonah:'myfunction'通過'array_udiff'調用。 –

+1

['strpos'](http://us3.php.net/strpos)*從不*返回'TRUE'。它返回字符串中的索引的整數,如果未找到,則返回「FALSE」。 –

回答

2

你可以嘗試(注意我用stripos而不是找到一個字符串不區分大小寫字符串)由於您使用的蛋糕1.3

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)