PHP bir işlev çağrısı üzerine bir boolean kontrol edebilirsiniz?

2 Cevap php

Ben bir dizi için bir şey eklemek istiyorum sahte eğer ben, geçti değerini kontrol eder ve yanlış ya da doğru döndüren bir işlevi var. Ben yazdım kod aşağıda.

if(!check_input($_POST['username'])){
    $errors[] = "Username";
}  

Şu anda ne olursa olsun şeklinde girilirse ne, zaten benim diziye ekler. Ben dönüş eğer doğru yolu check_input() kontrol etmek için yazdık yolu yanlış olduğunu? Ben yankıları döner değiştiren ve sadece ben yanlış kontrol ediyorum emin değilim, doğru değeri döndüren oluyor tarafından işlevin mantığını kontrol ettik.

Ben daha önce $X=check_input vb yazmak için çalıştı, ve sonra if(check_value == false) ama o da bana istenen sonucu vermek için görünmüyor ediyorum. Lütfen hızlı bir işaretçi Hmmm!

Edit:

Tamam, benim işlevi baktıktan sonra ben sorunu tespit düşünüyorum, ben bir deyimi eğer, ve bu bir içinde else if deyimi, ilk var denetler onun maksimum aşmadığı takdirde denetler değeri ikinci, boş değilse uzunluk ve doğru / yanlış döner. Ya da hiçbir şey ayarlanır - Ben bu değeri geçmişti yalnızca maksimum uzunluğunu kontrol etmek için ayarlayın. Ancak, denge üzerine ben deyim eğer ana için gerçek bir geri dönüş yok. Değeri hiç yoktan büyük sonra maksimum uzunluğu karşı kontrol Yani benim mantık, şu anda, daha sonra doğru dönün. Ben max uzunluğunu kontrol yok ve o değere sahip değilse o şey dönen değil. Hmmm. Bu benim sorunun nedeni bulunuyor düşünüyorum?

Edit 2:

Tüm, ve ben fonksiyonunu tekrar kontrol önerdi Marvin, teşekkürler. Ben çalışma var ettik. Başka bir şey return false eğer bir şey, yanlış dönerseniz o değil, ve ben başka açıklamada dışarı doğru benim dönüş aldı ve saygınlık hey!

2 Cevap

Sen false === operatörünü kullanarak işlevin dönüş değerini karşılaştırmak gerekir:

if(check_input($_POST['username']) === false) {

Eğer fonksiyon sadece döner emin Ama eğer boolean de çalışması gerektiğini yapmanın yolunu değer.

İşlev döner false başarısızlık ve başarı bir tamsayı / dizesi derken, sorun gelir. Bu durumda kontrol sizin yol false arasında ayrım olmayacak ve 0 (başarılı bir dönüş değeri olarak geri döndü)

Işlev dönen emin olun bir boolean ve bir string

 function check_input()
 {
      if( ! [enter logic here] ) 
          return false; # not return "false";

      return true;
 }

Sonra codaaddict dediği gibi, olan tip gibi eşitlik için işlevin dönüş değerini kontrol ===