Temel PHP mantığı sorun

4 Cevap php
$this->totplpremium is 2400
$this->minpremiumq is 800

Peki neden bu hiç doğru dönecekti?!

if ($this->totplpremium < $this->minpremiumq){

Rakamlar kesinlikle doğru ve kesinlikle sembolü 'daha az' kullanıyorum. Ben bu işe olamaz.

4 Cevap

Belki dönüşüm sorunu çeşit var. Kullanımını deneyin

var_dump($this->totplpremium);
var_dump($this->minpremiumq);
if ($this->totplpremium < $this->minpremiumq){
  ...
}

datatypes allright olup olmadığını görmek için

EDIT: Eğer hata ayıklama çıktılarını kullanarak daha kolay kod hata ayıklama sağlayan araçlar vardır - http://xdebug.org/ (ayıklama sağlayan PHP için bir uzantısı) ve http://en.wikipedia.org/wiki/PHPEd (Bu ticari değil I don. alternatif varsa 't biliyorum.)

Türüne intval ile numaralarını 'kaydırma deneyin:

if (intval($this->totplpremium) < intval($this->minpremiumq)){
//...
}

Beklendiği gibi çalışır, o zaman gerçekten, örneğin gettype kullanarak vardır totplpremium ve minpremiumq ne türlerini kontrol etmek gerekir:

print(gettype($this->totplpremium));
print(gettype($this->minpremiumq));

Bu bilgi ile size hatayı saptamak gerekir.

Alfabetik karşılaştırma olarak, aşağıdaki ifade doğrudur:

"800" > "2400"

(8, 2 'den daha büyük olduğu için)

<?php

$totplpremium="2400 ";
$minpremiumq="800";

var_dump(($totplpremium < $minpremiumq)?true:false);
var_dump(((int)$totplpremium < (int)$minpremiumq)?true:false);

?>

Senin de bu değerler gelen YA onlar tamsayılar emin çift onay gerektiği tahmin ediyorum.

İyi şanslar kodlama!