Eğer PHP ifadesi yapı

10 Cevap php

Ben kodu aşağıdaki bit ile bir hata alıyorum. Muhtemelen bazı küçük bir şey ama ben yanlış olduğunu görmüyorum.

while($row = mysql_fetch_array($result))
  {
   $varp = $row['ustk_retail'];
   if ($varp<80000) { $o1 = 1; }
   if (($varp=>80000) && ($varp<100000)) { $o2 = "1"; }
   if (($varp=>100000) && ($varp<120000)) { $o3 = "1"; }
   if (($varp=>120000) && ($varp<140000)) { $o4 = "1"; }
   if (($varp=>140000) && ($varp<160000)) { $o5 = "1"; }
   if (($varp=>160000) && ($varp<180000)) { $o6 = "1"; }
   if (($varp=>180000) && ($varp<200000)) { $o7 = "1"; }
   if (($varp=>200000) && ($varp<220000)) { $o8 = "1"; }
   if (($varp=>220000) && ($varp<240000)) { $o9 = "1"; }
   if (($varp=>240000) && ($varp<260000)) { $o10 = "1"; }
   if (($varp=>260000) && ($varp<280000)) { $o11 = "1"; }
   if (($varp=>280000) && ($varp<300000)) { $o12 = "1"; }
   if ($varp>=300000) { $o13 = "1"; }
  }

10 Cevap

Daha büyükse ya da eşit >= işareti değil =>

Update:
You are right. It's small but hard to find mistake.
It took me to split whole line into pieces to see where the problem is:

<?php
if 
(
$varp
=>
80000
)

So, it says parse error on line 5 and I had to doublecheck this operator.
Of course, at first I separated the problem line from the rest of the code to be certain.

php -l (lint) çalıştıran kod üzerinde bir olsun

Ayrıştırma hatası: sözdizimi hatası, beklenmedik T_DOUBLE_ARROW

T_DOUBLE_ARROW belirteç dizinin anahtarları dizi değerlerini atarken PHP beklediği budur.

Greater than or equal to PHP Ayrıştırıcı >= yerine => kullanımı var, yani T_IS_GREATER_OR_EQUAL beklediği için kıyaslarken.

Görmek

Sen bir ifade hata var.

$varp=>220000 // is not a valid php expression

=> operator is used to assign values in arrays like:

$x = array( 'foo' => 'bar');

>= is the comparation assigment greater than or equal

Sen koşullarda eğer bir hata yaptık. Eşit imzalamak daha büyüktür> = değil =>.

Cevabı zaten verilmiş ama bu paylaşmak için yeterince temiz olduğunu düşündüm edilmiştir:

PHP en switch deyimi boolean ifadeleri kabul eder.

switch(TRUE) {
    case $range <= 10:  echo "range below or equal to 10"; break;
    case $range <= 20:  echo "range above 10 below or equal to 20"; break;
    case $range <= 30:  echo "range above 20 below or equal to 30"; break;
    default: echo "high range";
}

Bence bu temiz en okunabilir kod üretir.

Bu daha okunabilir ve aynı yapmak için kompakt bir yoldur:

$ranges = range(300000, 80000, -20000);

$index = 1;

$varp = 220001;

foreach ($ranges as $i => $range) {
    if ($varp >= $range) {
        $index = 13 - $i;
        break;
    }
}

${'o' . $index} = 1;

Neyse - Seni sonucu değişken adını kullanarak yanlış bir şey yaptığını düşünüyorum.

Muhtemelen ($varp=300000) ($varp==300000) değiştirmek istiyorum ve bu gibi, if-ifadesi içindeki () tam içine yardımcı olabilir

if($varp80000 && $varp100000 && $varp120000 && $varp140000 && $varp160000 && $varp180000 && $varp200000 && $varp220000 && $varp240000 && $varp260000 && $varp280000 && $varp==300000) { $o13 = "1"; }

Başka bir notta, bu garip $ VARP # # # # değişkenleri gelen mi?

Gönderdiniz kod nedense berbat aldı, ama eksik gibi koşullar eğer bazı "==" görünüyor emin değildir. Skilldrick işaret olarak da, bütün if koşulu parantez içinde olmalıdır

"Büyüktür ya da eşit> = NOT =>. Siz anahtarları / değerleri için diziler => kullanın.

Koşullara yaklaşık bir daha dirsek ekleyin if ....

if ( ($varp80000) && ($varp100000) && ($varp120000) && ($varp140000) && ($varp160000) && ($varp180000) && ($varp200000) && ($varp220000) && ($varp240000) && ($varp260000) && ($varp280000) && ($varp=300000) ) { $o13 = "1"; }