Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Ardışık sayı olayı php


Öne çıkan mesajlar

Mesaj tarihi:
Off bu matematik öldürecek beni yine rezervasyon sistemiyle alakalı birşey sorucam. Sabah sabah algılarım fena kapalı.

Ardışık sayııları düşünün ama sadece 31'e kadar. Yani kişi rezervasyon yaparken şubat ayının 3-4-5-6 seçebilir ama 3-4-5-7-8 seçemez gibi algoritma kurmam gerekli.

Ayrıca 28-29-30-31-1-2-3 'de olabilir. Bunun algoritmasını hangi fonksiyonlarla ve mantıkla kurarım. Bir fikri olan var mı?
Mesaj tarihi:

function ardasiksayi($tarih) {
$result = true;
for ($i = 0; $i < count($tarih); $i++) {
if($tarih[$i] == 29) {
if($tarih[$i+1] != 30 || $tarih[$i+1] != 1) {
$result = false;
break;
}
}
elseif($tarih[$i] == 30) {
//yukardaki gibi
}
elseif($tarih[$i] == 31) {
//yukardaki gibi
}
elseif($tarih[$i] == count($tarih)) {
// bitti son sayi cik :D
break;
}
elseif($tarih[$i+1] != $tarih[$i]+1) {
$result = false;
break;
}
}
return $result;
}


hizlica yazdim test felan etmedim syntax icinde garantisi yok. algo felan olmasi lazim nette bi bakaydin.
Mesaj tarihi:
Seele, yazdigin sekilde yaparsan 31 gün ceken ay icin de 29-30-1 e izin vermis oluyorsun.

Pluton said:
Ayrıca 28-29-30-31-1-2-3 'de olabilir.


Subat ayi icin de 31 secmesine izin vericek misin peki?
Mesaj tarihi:
Şimdi zaten bunları takvimden seçeceği için ve takvimde şubat en fazla 29 çektiği için seçemiyor. Ama saldırgan lamelerden birisi gelir de seçer belki diye yapmak lazım diye düşünüyorum.

Yukarıda ki fonksiyon ile biryerlere gelmeye çalışıyorum ama lanet olsun matematik olayında iyice geriledim aklım almıyor şu olayı.
Mesaj tarihi:
dayofyear diye bir fonksiyon yaz. tarih verdiğinde o yıldaki kaçıncı günler olduğunu döndürsün. daha sonra kullanıcı hangi günler için rezervasyon yaptıysa o günler için dayofyear'ı çağır, ve elindeki array'e ekle.

elindeki array'deki elemanlar örneğin şubat ayı için şunun gibi olabilir:

40-41-42-43-44

daha sonra ardışık kontrolü yap. ilk eleman ile son eleman arasında, var olmayan eleman var mı diye kontrol et. (bir önceki fonksiyonda sortlarsan çok kolay)
Mesaj tarihi:
ben sadece fikir vermesin icin kodladim. yoksa 5 saniyede yazilan bisi. daha iyi bir sekilde mesela tüm tarihi arraya atip parseleyebilir daha sonra tarihden (sanirim phpde de date fonksiyonu benzer bisi var) o ayin kac cektigi bulabilir. orasi cok zor degil yani.
Mesaj tarihi:
fizban said:

dayofyear diye bir fonksiyon yaz. tarih verdiğinde o yıldaki kaçıncı günler olduğunu döndürsün. daha sonra kullanıcı hangi günler için rezervasyon yaptıysa o günler için dayofyear'ı çağır, ve elindeki array'e ekle.

elindeki array'deki elemanlar örneğin şubat ayı için şunun gibi olabilir:

40-41-42-43-44

daha sonra ardışık kontrolü yap. ilk eleman ile son eleman arasında, var olmayan eleman var mı diye kontrol et. (bir önceki fonksiyonda sortlarsan çok kolay)


Abi sen çok yaşa ya gerçekten. Day of Year hiç aklıma gelmedi yemin ediyorum. Offf sabahtan beri düşünüyorum nasıl yaparım diye :D
Mesaj tarihi:
Var abi var ya kendim uğraşmama gerek yok :D Ahanda burada http://php.net/manual/en/function.getdate.php array içinde "yday" diye veriyor arkadaş sağolsun :D
Mesaj tarihi:
Ardışık sayı olayıyla ilgili en fazla 365 olması lazım. Yani 365-0-1-2 'de olabilir.

Regexp'de yapılıyorda bu arrayde onun kontrolünü nasıl yapıcam ona bakıyorum. Abi bu ingilizcede "consecutive" olarak kullanılmıyor mu ya ardışık sayılar
Mesaj tarihi:
Day of year yaparsan yıl atladığında nolacak? Şubat her sene 29 çekmiyor; mod'la yapamazsın.

http://php.net/manual/tr/function.date.php

Oku, düşün. Biliyorum zor senin için ama...
Mesaj tarihi:
Dinlenmek gerçekten çok iyi birşeymiş ya bu olayı şu şekilde çözdüm;

Şimdi adamın seçtiği tarihler örneğin "25-02-2012 ve 04-03-2012" olsun. Bu 2 tarih arasında ki tüm günleri bulup bir array'e attım.

Zaten bunu bulduktan sonra geri kalan istediğiniz kontrolü yaptırabiliyorsunuz.

Fonksiyonu hazır biryerde bulup kendime göre düzenledim. 2 tarih arasında kalan tüm tarihleri bulmak isterseniz fonksiyon şudur;


function dates_range($date1, $date2)
{
if ($date1<$date2)
{
$dates_range = strtotime($date1).',';
$date1=strtotime($date1);
$date2=strtotime($date2);
while ($date1!=$date2)
{
$date1=mktime(0, 0, 0, date("m", $date1), date("d", $date1)+1, date("Y", $date1));
$dates_range .= $date1.',';
}
}
return substr($dates_range,0,-1);
}
×
×
  • Yeni Oluştur...