• 03-05-2013, 10:14:12
    #1
    Elimde çoklu bir dizi var bunda arama işlemi yapıyorum sonuc cıkıyor ama bir türlü uyarısını çıkartmadım sizce nerede hata var?
    Eğer değer varsa döngüsü koymak istedim ama bir türlü çalıştırmadım. if ($kontrol==0 or $kontrol>0) veya if(!empty($kontrol)) denedim ama çalıştmadı.

    $ekran = array("musteriid"=> $musteriid,"satisid"=>$satisid,"tutar"=>$tutar,"kullaniciid"=>$kullaniciid,"ucret"=>$ucret,"stokid"=>$stokid);
    
    
    
    function searchForId($id, $array) {
       foreach ($array as $key => $val) {
           if ($val['stokid'] === $id) {
               return $key;
           }
       }
       return null;
    }
    
    $kontrol = searchForId($stokid, $urunler);
    
    echo '>>>'.$kontrol.'<<<<';
    if($kontrol>0)
    {
    echo 'var';
    }
    diziyi print_r listedigimde aşagıdaki gibi çıkıyor

    Array ( [musteriid] => 149 [satisid] => 429 [tutar] => 10 [kullaniciid] => 4 [ucret] => 10.00 [stokid] => 2 ) [1] => Array ( [musteriid] => 149 [satisid] => 429 [tutar] => 5 [kullaniciid] => 4 [ucret] => 5.00 [stokid] => 1 ) [2] => Array ( [musteriid] => 149 [satisid] => 429 [tutar] => 5 [kullaniciid] => 4 [ucret] => 5.00 [stokid] => 1 ) [3] => Array ( [musteriid] => 149 [satisid] => 429 [tutar] => 10 [kullaniciid] => 4 [ucret] => 10.00 [stokid] => 5 ) )
    [/QUOTE]
  • 03-05-2013, 10:41:23
    #2
    in_array yada is_array fonskiyonunu kullanarak dizi içinde arama yapıp kontrolünü yaptırabilirsin.

      function searchForId($array, $bul){
      $var = FALSE;
      if(!is_array($array)){
        return;
     }
     foreach ($array as $key => $value) {
       if($bul == $value){
            $var = TRUE;
       }
     }
       return $var;
     }
    
    if ($var)
    {
        echo 'dizide var';
    }
    else
    {
        echo 'yok';
    }
  • 03-05-2013, 11:48:30
    #3
    radmin ilgin için teşekkurler burada bir husus var oda şu örnegin stokid ye göre aratırken eger musteriid de olursa o deger çıkacak ama ben sadece stokid göre baktırmak istiyorum bu yüzdende aramada belirttim.
    Arama kısmında sorun olmuyor. 0-1-2 gibi degerler veriyor ama bunu if döngüsünde boş oldugunda yok eger rakamsal 0-1-2 gibi degerler varsa var yazmasını saglıyamıyorum.

    örnegin deger var ise echo $kontrol dediginde 0 veya 1 gibi sonuç çıkartıyor oda dizide yeri oluyor.

    Misafir adlı üyeden alıntı: mesajı görüntüle
    in_array yada is_array fonskiyonunu kullanarak dizi içinde arama yapıp kontrolünü yaptırabilirsin.

      function searchForId($array, $bul){
      $var = FALSE;
      if(!is_array($array)){
        return;
     }
     foreach ($array as $key => $value) {
       if($bul == $value){
            $var = TRUE;
       }
     }
       return $var;
     }
    
    if ($var)
    {
        echo 'dizide var';
    }
    else
    {
        echo 'yok';
    }
  • 03-05-2013, 13:00:15
    #4
    Üyeliği durduruldu
    Yaşadığınız sorun şu siz kontrol yapınızda gelen değer "0" dan büyükse demişsiniz arama yaparken bulunan indisi döndürdüğünüz için "0" değeri geliyor ve kontrolünüz sağlanmıyor ..
    >= şu şekilde olursa sorununuz düzelir ya da
    şu şekilde de olabilir.
    if( !is_null( $kontrol ) )
    {
    echo 'Sonuç bulundu.';
    }
  • 03-05-2013, 13:10:16
    #5
    Şu fonksiyonla istediğiniz her 2 boyutlu diziyi tarayabilirsiniz:

    	// Searchs array if the needle is in the second level items
    	// When $top_key is true or (is NOT boolean and it equals to the needle), return value is the key of the first level item
    	// When $top_key is false, return value is the key of the second level item
    	function array_deep_search($needle, $array, $top_key = false)
    	{
    		foreach ($array as $key => $item)
    		{
    			if (!is_bool($top_key) && ((is_object($item) && $needle === $item->$top_key) || ($needle === $item[$top_key])))
    				return $key;
    			elseif (
    				is_bool($top_key)
    				&& (
    					(is_string($item) && $needle == $item)
    					|| (is_array($item) && ($index = array_search($needle, $item)) !== false)
    				)
    			)
    				return ($top_key ? $key : $index);
    		}
    
    		return false;
    	}
    Kullanım:
    // Belli bir key'e sahip elemanı arıyorken:
    $array = array(
    	0 => array(
    		'id' => 3,
    		'title' => 'A'
    	),
    
    	1 => array(
    		'id' => 5,
    		'title' => 'B'
    	)
    );
    
    // id key'inde 5 değerine sahip dizi elemanının INDEX DEĞERİNİ döndürür
    // yani aşağıdaki fonksiyon int(1) değerini döndürecektir
    array_deep_search(3, $array, 'id');
  • 03-05-2013, 13:58:01
    #6
    arkadaşlar teşekkurler sorun if döngüsünden önce vermiş oldugum echo danmış.

    echo '>>>'.$kontrol.'<<<<';