0

我的网站上有很多不同标签的文章。目前我只对这 4 个标签感兴趣:

Dog
Camel
Bear
Cat

如果一篇文章有​​任何这些标签,我想显示它。如果一篇文章有​​ 2 个或更多这些标签,我希望返回更多位于顶部的标签。例如,如果一篇文章同时具有 Bear 和 Cat 标签,则应返回 Bear。

到目前为止我的代码:

function determine_tag($tags) {
    $weights = array(
        'Dog',
        'Camel',
        'Bear',
        'Cat'
    );

    $matches = array();

    foreach($tags as $tag) {
        if(in_array($tag, $weights)) {
            $matches[] = $tag;
        }
    }

    var_dump($matches); // returns array (Cat, Dog)
}

$tags = array('Cat', 'Floating', 'Dog', 'lol', 'Article');
echo determine_tag($tags);

我认为它的效率不是很高,而且它只返回匹配的标签,它不会只返回权重最高的标签。怎么做?

4

2 回答 2

0

$tag = array_shift(array_intersect($weights, $tags));

于 2012-08-06T22:13:55.530 回答
0

我会使用 array_intersect,然后只查看匹配数组中的第一个值。像这样:

function determine_tag($tags) {
    $weights = array(
        'Dog',
        'Camel',
        'Bear',
        'Cat'
    );

    $matches = array_intersect($weights, $tags);

    if (count($matches) > 0) {
       $top_match = $matches[0];
    }
}
于 2012-08-06T22:15:35.113 回答