php benzersiz dizi değerlerini göstermek için nasıl

2 Cevap php
   $content = '<h3>popular tags »</h3><hr>';

    $result = $db->sql_query("SELECT tags FROM ".DOWNLOAD_TABLE." ");
    while($row = $db->sql_fetchrow($result)){
     $dl_tags_id = $row['tags'];
     $dl_tags_id_ex = explode(" ",$dl_tags_id)   ;
     $dl_tags_id = array_unique($dl_tags_id_ex);

     $c = count($dl_tags_id);
     for($i=1;$i<$c-1;$i++){
//for loop content

     }
    }
    echo $content;

Hey çocuklar. Ben benim popüler etiketleri göstermek için yukarıdaki kodu kullanılır. Eğer kodda görebileceğiniz gibi, ben iki tablo var, bir gibi dizi formatında etiketleri kimliği depolar indir tablosu:

20 21 13 14

Ve diğeri bu kimlikleri tanımlamak etiketleri tablo

Şimdi tek sorun bu kod yazdırırken, ben çoğaltılamaz etiketlerini görebilirsiniz olmasıdır:

white(2)
blue(4)
white(2)

Ben çoğaltılamaz çıkış gösteren önlemek nasıl merak ediyorum.

Şimdiden teşekkürler

2 Cevap

Her satırda array_unique çağrıyı yapıyoruz, çünkü bu oluyor!

Bunu yapıyoruz:

while($row = $db->sql_fetchrow($result)){
    $dl_tags_id = $row['tags'];
    $dl_tags_id_ex = explode(" ",$dl_tags_id)   ;
    $dl_tags_id = array_unique($dl_tags_id_ex);
    // rest of code...
}

zaman gerçekten bunu yapmak istiyorum:

$dl_tags_all = '';
while($row = $db->sql_fetchrow($result)){
    $dl_tags_all .= ' '.$row['tags'];
}
$dl_tags_id_ex = explode(" ",substr($dl_tags_all,1));
$dl_tags_id = array_unique($dl_tags_id_ex);
//rest of code....

Boşluklarla ayrılmış bir satırda birden fazla veri öğeleri saklamak için karar verdik nedeni oldukça emin değil. Birden çok satır yayılmış olsaydı bu bir SQL JOIN ve GROUP BY yan tümcesi kullanarak çok kolay yapmış olabilir. Şimdi olduğu gibi aslında, sadece yerine birkaç sorguları bir sorgu olurdu.

Lütfen etiketleri tablo içinde 10 satır vardı, ve her tag.tags saha içinde 5 öğe olsaydı Örneğin, veritabanını 50 kere yerine normal bir birleşim ile gerçekleştirmek istiyorum sadece bir sorgu sorgulama olacaktır.

Mike Sherov işaret ettiği gibi uygun konumda bir array_unique ile çiftleri ortadan kaldırarak sizin hemen hedefe ulaşmak için mümkün olsa da, array_unique aslında ek bir yük ekliyor. Şimdi dış döngünün her tekrarında sonra array_unique çağrı PHP dahili dups kaldırmak için dizinin tüm üyeleri aracılığıyla yineleme anlamına gelir.