Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Çok boyutlu dizi hakkında bir soru

Aşağıdaki gibi bir çok boyutlu dizi çıktım var.

Array
(
    [0] => Array
        (
            [sabit] => 3
            [deneme] => deneme
            [falan] => falan
            [filan] => filan
        )

    [1] => Array
        (
            [sabit] => 4
            [php] => phpde
            [asım] => kasım
            [web] => webte
            [site] => sitede
        )

)


Bu diziyi $dizi adındaki değişkene aktardım.Dışarıdan $_GET ile aldığım parametreyi bu dizi içerisinde arıyorum arama kodlarım da şu şekilde.

function ara($obj, $key, $val)
	{
    if ($obj == $val)
        echo $val.' dizide var...';
		
	}
	
	array_walk_recursive($dizi, 'ara', $come); //$come degiskeni $_GET ile tarayıcıdan aldığım değer


Buraya kadar sorun yok. Tarayıcıdan $_GET ile aldığım değeri dizi içerisinde bu şekilde arayıp var olup olmadığını bulabiliyorum. Ama diyelim aradığım değeri [1] => Array içerisinde buldu ben burada aradığım değerin yanı sıra yine [1] => Array içerisindeki [sabit] => 4 kısmındaki "4" değerini de almak istiyorum.Yani aradığım değeri hangi dizide bulmuşsa onun içerisindeki [sabit] => 4 kısmını da almam gerek. Oluşturduğun diziyi şöyle oluşturursan şöyle işlem yapıp istediğine ulaşabilirsin gibi önerilerde de bulunabilirsiniz. Şimdiden teşekkür ederim arkadaşlar.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • phpCoder adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    2 cevap - 0 soru
    Basitce bu şekilde yaptım
    function ara($aranan, $ana_dizi) {
    	foreach($ana_dizi as $key => $alt_dizi) {
    		if(in_array($aranan, $alt_dizi))	{
    			return 'Sabit: ' . $alt_dizi['sabit'] . ' -  Deger: ' . $aranan . ' - Bulunan index: ' . $key;
    		}
    	}
    	
    	return false;
    }
    
    if($ara = ara($_GET['bisey'], $dizi)) {
    	echo $ara;
    } else {
    	echo 'Bulunamadi';
    }
    


    Açıkcası soruyu tam olarak anlayamadığım için cevabın doğru olup olmadığından emin değilim
    Benim yazdığım fonksiyon değer bulduğunda aramayı durduruyor. Aranan değer birden fazla dizide varsa ilk bulunduğu dizi hangisiyse o dizideki sabiti ve aranan değeri verecektir. Birde çıktıyı nasıl almak istediğini yazmamışsın bende basitçe bu şekilde yaptım.