• 05-04-2007, 13:28:41
    #1
    Merhaba;

    Arakdaşlar php ile birşey yapmak istiyorum.

    Script önümüzdeki cumartesi gününe kaç gün kaldığını bulmalı. date() ve time() fonksiyonlarıyla yapılıyor sanırım ama bir türlü işin içinden çıkamadım. Bu fonksiyonları kafam almıyor Yardım edebilecek var mı?

    Şimdiden teşekkürler.
  • 05-04-2007, 14:03:15
    #2
    Üyeliği durduruldu
    Ceviz.net > Makale > PHP Sayaç-Counter
  • 05-04-2007, 14:38:15
    #3
    Söylediğim şeyle hiç alakası yok maalesef

    Benim söylediğim şuydu.

    Bu gün Perşembe. Cumartesi gününe bu günü de sayarsak 2 gün var.

    2 gün sonra Cumartesi. Ertesi gün pazar.

    Pazar günü bu script 6 çıktısını vermeli. Yani devretmeli.
  • 05-04-2007, 16:39:08
    #4
    Neyse ki biraz düşününce bir çözüm yolu üretebildim

    switch (date("l"))
        {
            case "Monday":
                $kacgunkaldi = 5;
                break;
            case "Tuesday":
                $kacgunkaldi = 4;
                break;
            case "Wednesday":
                $kacgunkaldi = 3;
                break;
            case "Thursday":
                $kacgunkaldi = 2;
                break;
            case "Friday":
                $kacgunkaldi = 1;
                break;
            case "Saturday":
                $kacgunkaldi = 0;
                break;
            case "Sunday":
                $kacgunkaldi = 6;
                break;
        }
    echo "Cumartesi gününe ".$kacgunkaldi." gün kaldı.";
  • 05-04-2007, 16:53:37
    #5
    if fonksiyonu ile çok kolayca yapılabilir.

    mantık yukardaki ile aynı.

    if daha hızlıdır fakat böyle kısa bir kod için farketmez tabiiki.
  • 05-04-2007, 17:02:57
    #6
    <?= (6-date('w') > 0) ? 6-date('w') : 6; ?>
  • 05-04-2007, 17:06:16
    #7
    eXtreme adlı üyeden alıntı: mesajı görüntüle
    if fonksiyonu ile çok kolayca yapılabilir.
    mantık yukardaki ile aynı.
    if daha hızlıdır fakat böyle kısa bir kod için farketmez tabiiki.
    switch daha hızlı diye biliyorum. Herkes de böyle diyor.

    dmRy'nin verdiği kod daha orijinalmiş.

    Teşekkürler.

    Edit: Ama hata var sanki. Günlerden Cumartesi olduğunda bu kod 6 diye çıktı veriyor. Pazar olduğunda yine 6 diye çıktı veriyor.
  • 05-04-2007, 18:27:27
    #8
    Hımmm evet haklısın, ufak bir mantık hatamız olmuş. Şöyle daha güzel o halde

    <?= (6-date('w') >= 0) ? 6-date('w') : 6; ?>
  • 05-04-2007, 18:49:11
    #9
    Alıntı
    switch daha hızlı diye biliyorum. Herkes de böyle diyor.
    hazır konusu açılmışken, kimin söylediğiyle değil, bizzat kendi testleriniz ile hangisinin daha hızlı olduğunu görebilirsiniz. Kullanılacağı yere ya da duruma göre birbirlerinden daha hızlı olabilirler. Fakat üstteki uygulamalar için bakalım sırayla;

    //Switch ile uygulama
    function timer_stop() { 
        global $timestart, $timeend;
        $mtime = microtime();
        $mtime = explode(' ',$mtime);
        $mtime = $mtime[1] + $mtime[0];
        $timeend = $mtime;
        $timetotal = $timeend-$timestart;
        return number_format($timetotal,5);
    }
    function timer_start() {
        global $timestart;
        $mtime = explode(' ', microtime() );
        $mtime = $mtime[1] + $mtime[0];
        $timestart = $mtime;
        return true;
    }
    timer_start();
    $bugun = date("l");
    for ($i=0; $i<10000; $i++) {
    switch ($bugun)
        {
            case "Monday":
                $kacgunkaldi = 5;
                break;
            case "Tuesday":
                $kacgunkaldi = 4;
                break;
            case "Wednesday":
                $kacgunkaldi = 3;
                break;
            case "Thursday":
                $kacgunkaldi = 2;
                break;
            case "Friday":
                $kacgunkaldi = 1;
                break;
            case "Saturday":
                $kacgunkaldi = 0;
                break;
            case "Sunday":
                $kacgunkaldi = 6;
                break;
        }
    }
    echo "Cumartesi gününe ".$kacgunkaldi." gün kaldı."; 
    echo 'Derlenme Süresi: '. timer_stop();
    // Derlenme süresi ortalama 0,01203 sn
    //If ile uygulama
    function timer_stop() { 
        global $timestart, $timeend;
        $mtime = microtime();
        $mtime = explode(' ',$mtime);
        $mtime = $mtime[1] + $mtime[0];
        $timeend = $mtime;
        $timetotal = $timeend-$timestart;
        return number_format($timetotal,5);
    }
    function timer_start() {
        global $timestart;
        $mtime = explode(' ', microtime() );
        $mtime = $mtime[1] + $mtime[0];
        $timestart = $mtime;
        return true;
    }
    timer_start();
    $bugun = date("l");
    for ($i=0; $i<10000; $i++) {
    if ($bugun=='Monday') $kacgunkaldi = 5;
    if ($bugun=='Tuesday') $kacgunkaldi = 4;
    if ($bugun=='Wednesday') $kacgunkaldi = 3;
    if ($bugun=='Thursday') $kacgunkaldi = 2;
    if ($bugun=='Friday') $kacgunkaldi = 1;
    if ($bugun=='Saturday') $kacgunkaldi = 0;
    if ($bugun=='Sunday') $kacgunkaldi = 6;
    }
    echo "Cumartesi gününe ".$kacgunkaldi." gün kaldı."; 
    echo 'Derlenme Süresi: '. timer_stop();
    // Derlenme süresi ortalama 0,02144 sn
    //Switch kısayolu ile
    function timer_stop() { 
        global $timestart, $timeend;
        $mtime = microtime();
        $mtime = explode(' ',$mtime);
        $mtime = $mtime[1] + $mtime[0];
        $timeend = $mtime;
        $timetotal = $timeend-$timestart;
        return number_format($timetotal,5);
    }
    function timer_start() {
        global $timestart;
        $mtime = explode(' ', microtime() );
        $mtime = $mtime[1] + $mtime[0];
        $timestart = $mtime;
        return true;
    }
    timer_start();
    $bugun = date("w");
    for ($i=0; $i<10000; $i++) {
    $kacgunkaldi = (6-$bugun >= 0) ? 6-$bugun : 6;
    }
    echo "Cumartesi gününe ".$kacgunkaldi." gün kaldı."; 
    echo 'Derlenme Süresi: '. timer_stop();
    // Derlenme süresi ortalama 0,00894 sn
    Testi nasıl uyguladım?

    Bunların herbirini bir php dosyasına ekledim ve kendilerini sunucu üstünden çağırdım. Tabi gördüğünüz gibi tarih farkı bulma işlemini for döngüsü ile arka arkaya 10.000 kez uygulatıyoruz. Fakat bu yetmiyor ve sayfa yüklendikten sonra arka arkaya birkaç kez F5 yaptım ve hızlı bir şekilde aynı işlemi tekrar yaptırdım. Böylece daha da yük bindirmiş oldum.. Bu esnada verebildikleri en küçük süre değerini not aldım.. Ve üstteki gibi saniyeler ortaya çıktı..

    Hangisinin hızlı olduğu konularda takılınca bu tarz testler uygulamanız faydalı olacaktır