2012-01-15 2 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 может быть то, что вам нужно?

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

Вы, вероятно, хотите что-то вроде этого:

$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.

Что это делает обработки каждую строку результата (который я предполагаю, как выглядит "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); 
Смежные вопросы