v2.5.2
Giriş yap

array içinde benzersiz olanları almak

rephp7
551 defa görüntülendi
<?php

for ($i = 0; $i < count($tags); $i++) {
  
$keyw = array_map('trim', explode(',', $tags[$i]["keyw"]));
foreach ($keyw as $keyw) {
  
?>
 <?php echo $keyw; ?> 


tag sayfamda aynı tag'a sahip olan yazıları listeletiyorum. Bu arama sonucu gelen yazıların tüm taglarını da sayfada göstermek istiyorum.
Fakat farklı yazılarından gelen aynı olan kelimeleri dışlayamadım. 3 makale listelenmişse aynı kelimeler 3 defa tekrarlıyor gibi.
sanırım array_unique kullanmam lazım ama bir türlü nerde hangi aşamada kullanacağım çözemedim.

Cevap yaz
Cevaplar (4)
asanprogrammer
1183 gün önce

şimdi lazım oldu bana müşterinin projesini yaparken şansına bu konuyu gördüm .
yapmamız gereken şey; array_flip() ile value ile keylerin yerini değiştirdikten sonra array_uniqe() kullanacaksın sonrasında ise array_flip() ile tekrar uniq işlemi yaptığımız keyleri valueye aktaracağız ve
ilk baştaki hale getireceğiz ve sonuç istediğimiz gibi çıkacak

örnek kod şu şekilde :

<?php

$dataValue = array_flip($label);
$keysa = array_unique($dataValue);
$label = array_filter(array_values(array_flip($keysa)));

?>

bu arada Tayfun hocama selam olsun.Furkan Asan ben . Belki tanır veya hatırlar :)

rephp7
1185 gün önce

Şu şekil kullandım:

for ($i = 0; $i < count($tags); $i++) {
  $tag = array_values(array_unique($tags[$i]["keyw"]));
  print_r($tag);

Hata: array_unique() expects parameter 1 to be array, string given in...

Verdiğiniz kodu for dan öncede sonrada eklesemde hata veriyor.

tayfunerbilen
1186 gün önce

şöyle kullanman gerekiyor;

$tags = ['test', 'deneme', 'test', 'test', 'prototurk'];
$tags = array_values(array_unique($tags));
print_r($tags);
rephp7
1187 gün önce

sanırım explode den önce bir şey yapmalıyım ama bulamadım. çözemedim nasıl yaparım.