süre koşulu karşılaştırmak eğer php i bir satır gerekir

4 Cevap

i değeri var

 $mo=strtotime($input_array['MondayOpen']);
 $mc=strtotime($input_array['MondayClose']);

şimdi ben aşağıdaki şartların bir hata görüntülemek için ise durum gerek

  1. bunlardan biri ($ ay veya $ mc), boş boş veya boş olup olmadığını.
  2. yakın zaman ($ mc) açık kalma süresi daha az ise ($ ay)

hem (null) veya $ mc> $ mo boş ise o zaman daha ileri gitmek demektir

optimize edilmiş bir satır öneririz lütfen eğer bunun için koşul

i know it seems very basic question, but i m facing problem when both are null either i was using simple

if(($mo==NULL && $mc!=NULL) || ( $mo>=$mc && ($mo!=NULL && $mc!=NULL))  )

4 Cevap

php, strotime bir tamsayı veya false dönecektir. Bu durumda null denetleme meyve, ama aksi asla ...

if((!$mo xor !$mc) || ($mc && $mc<=$mo)){
  print('error');
}else{
 print('no_error');
}

ayyy, doğruluğu için düzenlenebilir. Ben $ mc $ ve mo aktarılmamıştır. XOR olsa doğru olmalıdır.

0, bütün boş ve boş burada tamamen farklı şeyler ifade unutmayın. Daha önce belirtildiği gibi, strtotime NULL dönmek asla. false strtotime işlevi sağlanan değer işlemek için mümkün olduğu anlamına gelir oysa Ancak, 0, geçerli bir Unix zaman damgası.

Ayrıca, o bir tek satır bir çözüm talep ettik; Ancak, benim görüşüme göre, her koşul yazmak ve her bir durum için farklı bir hata iletisi görüntülemek için bu durumda çok daha iyidir. Bu şekilde, kullanıcı aslında neyin yanlış gittiğini bilir. Belki de bu daha iyi bir yoludur:

// Only check for errors if we have at least one value set
if (!empty($input['MondayOpen']) || !empty($input['MondayClosed']) {
    $mo = strtotime($input['MondayOpen']);
    $mc = strtotime($input['MondayClosed']);

    $invalid = false;
    if (false === $mo) {
        echo "Invalid Opening Time\n";
        $invalid = true;
    }

    if (false === $mc) {
        echo "Invalid Closing Time\n";
        $invalid = true;
    }

    if (!$invalid && $mc <= $mo) {
        echo "Closing time must be After Opening Time\n";
        $invalid = true;
    }

    if ($invalid) {
        exit();  // Or handle errors more gracefully
    }
}

// Do something useful

Tamam. Buna ne dersin.

It checks whether $mo and $mc are valid dates using is_numeric. Any NULL or false values will be caught by that. I haven't tested it but it should work.

Ben kod büyük bir blok içine yayıldı. Dil öğrenme zaman Başlangıçta, bu kodun anlam çıkarmak için en iyi yoldur. Bu kısa çözüm en zarif, ne kadar değildir. Daha sonra, boşluk kaldırarak onu kısaltmak veya or ve malzeme getirerek yapabilirsiniz.

Ben sayı karşılaştırma bölümü hakkında% 100 emin değilim, ve ben şu anda bunu kontrol etmek için vaktim yok. Bunu çalışıp çalışmadığını denemek gerekecek.

Eğer hataları işlemek ve benim yorum nerede kodu eklemek istiyorum nasıl karar vermeniz gerekir. Basit bir echo zaten yapabilir.

// If $mo or $mc are false, show error. 
// Else, proceed to checking whether $mo is larger
// than $mc.

if ((!is_numeric($mo)) and (is_numeric($mc)))
 {
   // Error: $mo is either NULL, or false, or something else, but not a number.
   // While $mc IS a number.
 }
elseif ((!is_numeric($mc)) and (is_numeric($mo)))
 {
   // Error: $mc is either NULL, or false, or something else, but not a number.
   // While $mo IS a number. 
 }
else
 {

   if (($mc <= $mo) and ((is_numeric($mc) or (is_numeric($mo)))))
    {
       // Error: closing time is before opening time.
    }
    else
     {
       // Success!!

      }

 }

Sen deneyebilirsiniz:

print ((empty($mo) && empty($mc)) || ($mc > $mo)) ? 'case_true_message' : 'case_false_message';

Ama aynı zamanda manuel :) kontrol etmelisiniz - temel kontrol yapıları için