• 16-08-2016, 16:14:59
    #1
    S.a. arkadaşlar,

    Dizilerde serileri bulmaya çalışıyorum şöyleki.

    $seri = array('1','1','1','1','1');

    Gördüğünüz gibi 5 li bir seri zaten bunu bulmada pek sorun yokta

    $seri = array('1','1','0','5','6','8');

    ilk 2 elaman seri oluşturuyor. Sonradan seri bozulmuş. Ekrana ilk iki elaman seri oluşturmuş yazdırmam lazım. Yani öyle bir fonksiyon olması lazımki bana tüm serileri versin. Bildiğiniz böyle hazır bir fonksiyon varmıdır. Çok fazla şart kullanarak yapılabilir fakat gözüm kesmiyor açıkcası. Yardımlarınızı rica ederim.
  • 16-08-2016, 17:19:35
    #2
    Switch Case yapısı ile daha kolay olabilir sanırım. bir bakın derim.
  • 16-08-2016, 18:32:38
    #3
    <?php //php 5.5.9
    
        $seri = array('2','2','2','0','6','8');
    
        $last = -1;
        $count = 0;
        foreach($seri as $key) {
            if($last == -1) $last = $key;
            if($key == $last) $count++;
            else break;
        }
    
        echo "İlk $count eleman seri oluşturmuş";
    ?>
  • 16-08-2016, 19:45:49
    #4
    Khloros adlı üyeden alıntı: mesajı görüntüle
    <?php //php 5.5.9
    
        $seri = array('2','2','2','0','6','8');
    
        $last = -1;
        $count = 0;
        foreach($seri as $key) {
            if($last == -1) $last = $key;
            if($key == $last) $count++;
            else break;
        }
    
        echo "İlk $count eleman seri oluşturmuş";
    ?>
    Hocam teşekkürler. Akıl akıldan üstündür Çok mantıklı bir kod ufkumu açtığınız için çok teşekkürler.
  • 16-08-2016, 23:48:19
    #5
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkürler. Akıl akıldan üstündür Çok mantıklı bir kod ufkumu açtığınız için çok teşekkürler.
    Faydalı olabildiysek ne mutlu hocam
  • 18-08-2016, 01:09:02
    #6
    Tüm serileri almak adına kullanabileceğiniz fonksiyon(O(nlogn)) aşağıdadır.

    <?php
    	function ikili($var) {
    		$coun = count($var);
    		if($coun == 1) {
    			return;
    		}
    		$arr = array();
    		$series = array();
    		for($i=1;$i<$coun;$i++) {
    			if($var[$i-1] == $var[$i]) {
    				$arr[] = $var[$i-1];
    				$arr[] = $var[$i];	
    			} else if(isset($arr[1])) {
    				$series[] = $arr;
    				$arr = array();
    			}
    		}
    		return $series;
    	}
    ?>