Sayılar bir dizi PHP yankı komut dosyası oluşturmak için yardıma ihtiyacınız var

2 Cevap php

Ben (biz 'numara' değerini arayacağım) POST bir sayı okur basit bir komut dosyası gerekir. Bu aşağıdaki aralığı gerekir üç haneli bir numara olacak:

301-340

401-440

501-540

601-640

701-740

801-840

Bu aralıklar içinde düşmezse, ben bir mesajı yankı gerekir. Kimse bu nasıl yapardı?

2 Cevap

if($number <= 300 || $number > 840 || (($number-1) % 100) >= 40) {
    echo "Number was not in ranges!";
}

Bu sayısına bölünmesi sırasında kalanı verir % (modül) operatörü yararlanır - böylece kalan Modulo 100 1-40 olduğunu numaralarını isteyen konum beri, sadece almak, bir çıkartın o 100 modulo, ve o 40 + ise (1-40 şimdi 0-39 olduğu) sonra göreceksiniz.

Bu yaklaşım sürece aralıkları o dizi kalıbı olarak izleyin, güzel ve özlü. Eğer bireysel aralıkları daha fazla özelleştirme ihtiyacınız varsa, bir switch deyimi (bu bir örnek için answer from "too much php" bakınız) kullanın.

Bu biraz farklı. Umarım dizi bina too çok yükü katmıyor.

// Possible answers
$validInputs = array_merge(range(301, 340), range(401, 440), range(501, 540)); // and so forth...

$input = (int) $_POST['input'];

if ( ! in_array($input, $validInputs)) {
    echo 'Got an error!';
}

İlgili Dokümanlar: range(), array_merge() ve in_array().