2012-01-15 5 views
0

안녕하세요. 현재 데이터베이스의 각 이미지에서 태그를 검색하는 코드가 있습니다. 태그는 쉼표로 구분됩니다. 배열 끝에 각 태그 집합을 배치합니다. 이제 검색된 태그의 배열을 만들고 모든 복제본을 병합하려고합니다.일치하는 문자열을 배열에 병합하려면 어떻게해야합니까?

function get_tags() 
{ 
    $tag_array = array(); 
    $query = mysql_query(" 
    SELECT tags 
    FROM gallery_image 
    "); 

    while($row = mysql_fetch_assoc($query)) 
    { 
     $tags = $row['tags']; 
     $tag_array[] = $tags; 

    } 

    echo $tag_array[0] . '<br>' . $tag_array[1] . '<br>' .$tag_array[2]; 
} 

답변

2

당신의 질문은 매우 명확하지 않지만 array_unique는 당신이 필요로 할 수있다?

$tags = array(
    'one,two', 
    'one,three', 
); 

$result = array_unique(array_reduce($tags, 
            function($curr, $el) { 
             return array_merge($curr, explode(',', $el)); 
            }, 
            array())); 

See it in action :

function get_tags() 
{ 
    $query = mysql_query('SELECT tags '. 
         'FROM gallery_image'); 
    $tag_array = array(); 
    while($row = mysql_fetch_assoc($query)) 
    $tag_array = array_merge($tag_array, explode(',', $row['tags'])); 

    return array_unique($tag_array); 
} 
1

당신은 아마 이런 식으로 뭔가를 할 수 있습니다.

이것은 각 결과 행 ("tag1,tag2"으로 가정)을 array_reduce으로 차례로 처리하고, 태그를 explode으로 분리하여 요소 당 단 하나의 태그가있는 중간 배열로 수집합니다. 그런 다음 중복 된 태그는 array_unique으로 필터링되어 최종 결과가 생성됩니다.

0

이 시도 :

$unique_tags = array(); 
foreach ($tag_array as $value) { 
    $unique_tags = array_merge($unique_tags, explode(",", $value); 
} 
$unique_tags = array_unique($unique_tags); 
관련 문제