0

string(url)とint(score)の両方を含む2つの配列をマージしました。以下は、outomeのサンプルです。文字列が複製されるときはいつでも、その文字列とそれに対応するintを削除する必要があります。たとえば、4行目(www.thebeatles.com/-30)を削除する必要があります。5行目と6行目も、すでに異なるスコアで表示されているため、削除する必要があります。

http://www.thebeatles.com/ - 55
http://en.wikipedia.org/wiki/The_Beatles - 49
http://www.beatlesstory.com/ - 45
http://www.thebeatles.com/ - 30
http://en.wikipedia.org/wiki/The_Beatles - 28
http://www.beatlesstory.com/ - 26
http://www.beatlesagain.com/ - 24
http://www.thebeatlesrockband.com/ - 23
http://www.last.fm/music/The+Beatles - 22
http://itunes.apple.com/us/artist/the-beatles/id136975 - 20
http://www.youtube.com/watch?v=U6tV11acSRk - 18
http://blekko.com/ws/http://www.thebeatles.com/+/seo - 17
http://www.adriandenning.co.uk/beatles.html - 16
http://www.npr.org/artists/15229570/the-beatles - 15
http://mp3.com/artist/The%2BBeatles - 14
http://www.beatles.com/ - 13
http://www.youtube.com/watch?v=TU7JjJJZi1Q - 12
http://www.guardian.co.uk/music/thebeatles - 11
http://www.cirquedusoleil.com/en/shows/love/default.aspx - 9
http://www.recordingthebeatles.com/ - 7
http://www.beatlesbible.com/ - 5

私はPHPを初めて使用し、array_unique()を機能させるための最善の努力は失敗しました。助けてくれる人に本当に感謝します!

4

3 に答える 3

0

リンクとスコアを含む配列のキーとしてリンクを作成できます。キーに対応して、常に1つの値があります。ただし、最後に追加されたものは、最終的な配列に含まれます。

于 2012-06-29T11:00:24.923 に答える
0

まあ、技術的にさえ、それらの文字列は一意ではありません。つまり、それらは完全に異なります。

したがって、array_unique()は必要な出力を提供しません。この問題を解決する1つの方法は、個別の配列を定義し、URIと数値を個別に格納することです。扱いやすい形はこれでしょう。

array(

    array("http://www.thebeatles.com", 55),
    array("http://www.thebeatles.com", 30)

);
于 2012-06-29T11:13:34.617 に答える
0

これは、2つの配列をマージし、重複を破棄する関数です。これが役立つことを願っています。

        function merge_links($arr_l, $arr_r) {
            $new_links = array();
            $links = array_merge($arr_l, $arr_r); //the big list with every links


            foreach($links as $link) {
                $found = false; //did we found a duplicate?

                //check if we already have it
                foreach($new_links as $new_link) {
                    if($new_link['url'] == $link['url']) {
                        //duplicate
                        $found = true;

                        break;
                    }
                }

                //not found, so insert it
                if(!$found) {
                    $new_links[] = $link;
                }
            }

            return $new_links;
        }

        $arr1[0]['url'] = 'http://test.nl';
        $arr1[0]['score'] = 30;

        $arr1[1]['url'] = 'http://www.google.nl';
        $arr1[1]['score'] = 30;

        $arr2[0]['url'] = 'http://www.tres.nl';
        $arr2[0]['score'] = 30;

        $arr2[1]['url'] = 'http://test.nl';
        $arr2[1]['score'] = 30;

        print_r(merge_links($arr1, $arr2));
于 2012-06-29T11:35:15.547 に答える