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

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 に答える
0

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

于 2012-08-06T22:13:55.530 に答える