PHP :

2009-12-09 3 views
9

내가 array_diff 찾기 위해 두 배열과 코드를 다음했다 "array_diff"대소 문자를 구별하지 : 나는 그것을으로 사용할PHP :

$final_ws = array("LOVE", "World", "Your", "CoDe"); 

그러나 : 출력 배열을주는 코드 위

$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 

$final_ws = array_diff($all_ws, $obs_ws); 

로 :

참고 "사용자"는 제거되지 않습니다. "Y"가 두 번째 배열의 대문자에 있기 때문일 수 있습니다. "Your"도 제외하고 싶으므로 PHP에서는 array_diff의 대소 문자를 구별하지 않는 버전이 있습니다.

나는 array_udiff을 시도하지만 난 array_udiff 함수에 세 번째 매개 변수로 strcasecmp를 전달하는 내 문제에

감사

답변

43

시도를이를 사용하는 방법을 정확히지고 있지 않다 :

<?php 
$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 

$final_ws = array_udiff($all_ws, $obs_ws, 'strcasecmp'); 

print_r($final_ws); 

출력 :

Array 
(
    [0] => LOVE 
    [1] => World 
    [5] => CoDe 
) 
+2

나는 귀하의 쉼표가 누락 된 것으로 믿습니다. ;) – MitMaro

+0

@MitMaro : 고마워! –

+0

'array_udiff ($ all_ws, $ obs_ws, 'strcasecmp');와 같이 시도했지만 작동하지 않습니다 : ( – Prashant

3

당신은 올바른 길을 가고있었습니다. 이것은 내 제안입니다.

function array_casecmp($arr1,$arr2){ 
    return array_udiff($arr1,$arr2,'strcasecmp'); 
} 


$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 
var_dump(array_casecmp($all_ws,$obs_ws)); 
+1

왜 함수 이름''strcasecmp''를 세 번째 매개 변수로 전달하지 않을까요? –

+1

당신 말이 맞아요. – Jage