caneraltinel adlı üyeden alıntı

Bu kod önce her bir elemanı kontrol eder ve her bir değer için bir "anahtar-değer" sözlüğüne ekleme yapar. Daha sonra, sözlükteki her bir değer için, eğer birden fazla anahtar varsa, bu anahtarları ekrana yazdırır.

 

Örneğin, aşağıdaki örnekteki dizi örneğinde, "Melih" değeri üç kez bulunuyor ve bu değere sahip anahtarlar 0, 4 ve 7'dir. Bu nedenle, PHP kodu bu anahtarları ve değeri ("Melih") ekrana yazdıracaktır.

Kendine göre uyarlayabilirsin. Umarım bu yardımcı olur.

<?php
$dizi = array("Melih", "Şüheda", "Zeliha", "Mehmet", "Melih", "Murat", "Selçuk", "Melih");
$anahtarlar = array();

for ($i = 0; $i < count($dizi); $i++) {
    if (!isset($anahtarlar[$dizi[$i]])) {
        $anahtarlar[$dizi[$i]] = array($i);
    } else {
        array_push($anahtarlar[$dizi[$i]], $i);
    }
}

foreach ($anahtarlar as $anahtar => $deger) {
    if (count($deger) > 1) {
        echo $anahtar . " anahtarına sahip değer " . $dizi[$deger[0]] . " " . implode(",", $deger) . " indekslerinde bulunuyor." . "\n";
    }
}
?>

Çok teşekkürler hocam elinize sağlık. Kodları çalıştırdığımda dizi içerisinde 4 tane aynı değer var. Onun 3 tanesini doğru buluyor ancak ilk sıradakini bulamıyor. Çok saçma bir durum anlamadım gitti.

Kodları çalıştırıyorum şöyle sonuç çıkıyor.

ZRGYO anahtarına sahip değer ZRGYO 8396,12330,15313 indekslerinde bulunuyor.

Ama şu şekilde çıkması gerekiyor.

ZRGYO anahtarına sahip değer ZRGYO 3996, 8396,12330,15313 indekslerinde bulunuyor.

İlk baştaki 3996 anahtarını neden atlıyor çözemedim.