2012-12-19 7 views
0

2 개의 배열이 있고 PHP를 사용하여 배열 중 하나의 값을 찾으려고합니다.PHP를 사용하여 배열 내부에서 문자열 찾기

나는 PHP explode 기능을 사용해야 만한다는 것을 알았지 만, 내 기술이 끝나는 곳이 두렵다.

내 함수는 두 배열의 값을 비교하고 안에있는 $needle 값을 찾으면 $found 안에 반환합니다. 잠재적으로 둘 이상을 찾을 수 있으므로 $found도 배열이어야합니다.

$needle = "Swimming,Landscaping,Gardening,Bricklaying,3D Modelling"; 
$haystack = "Football,Rugby,Landscaping,3D Modelling"; 
$found = magicFunction($needle,$haystick); 
// $found['0'] = "Landscaping"; 
// $found['1'] = "3D Modelling"; 

의미가 있습니까?

많은 도움을 주셔서 감사합니다.

답변

3

당신은 같은 것을 할 수있는 바늘을 폭발

$found = array_intersect (explode(',', $haystack), explode(',', $needle)); 
+0

Brilliant !! 나는 지금 이것을 시도 할 것이다 - 고마워! – michaelmcgurk

7

PHP는 편리한 기능인 array_intersect을 제공합니다.

$found = Array(); 
$needle = "Swimming,Landscaping,Gardening,Bricklaying,3D Modelling"; 
$haystack = "Football,Rugby,Landscaping,3D Modelling"; 
$search = explode(',',$haystack); 
foreach (explode(',',$needle as $k => $v) 
{ 
    if (in_array ($v, $search)) 
    $found[] = $v; 
} 

또는 다윗이 말한대로 array_intersect 사용할 수 있습니다 :

$needle = "Swimming,Landscaping,Gardening,Bricklaying,3D Modelling"; 
$haystack = "Football,Rugby,Landscaping,3D Modelling"; 

$needle = explode(",", $needle); 
$haystack = explode(",", $haystack); 

$intersection = array_intersect($haystack, $needle); 
print_r($intersection); 
//Array ([2] => Landscaping [3] => 3D Modelling) 
+0

오 ... 이것 좀 봐. 고마워요, David :-) – michaelmcgurk

0

가장 쉬운 방법은 아마도 봐 strpos을 사용하는 경우 당신은 문자열의 위치가 필요하지 않은 경우

$needles = explode(',', $needle); 
foreach ($needles as $n) 
{ 
     if (strpos($n, $haystack)) { } 
} 

Jan Hančič 솔루션은 더 적절하고 빠르게 할 수있다.

1

그런 다음 두 개의 배열의 교 차 발견, 바늘과 건초 더미에서 배열을 생성 할 수 있습니다 :

<?php 

$needle = "Swimming,Landscaping,Gardening,Bricklaying,3D Modelling"; 
$haystack = "Football,Rugby,Landscaping,3D Modelling"; 

$needle = explode(',', $needle); 
$haystack = explode(',', $haystack); 


$found = array_intersect($needle, $haystack); 

print_r($found); 
?> 

http://tr1.php.net/array_intersect

1

당신이 PHP에 내장되어 찾고있는 기능 : array_intersect합니다.

$a = explode(',', "Swimming,Landscaping,Gardening,Bricklaying,3D Modelling"); 
$b = explode(',', "Football,Rugby,Landscaping,3D Modelling"); 
$found = array_intersect($a, $b); 
print_r($found); 

출력 : Array ( [1] => Landscaping [4] => 3D Modelling )

관련 문제