PHP koşul, parantez gerekli?

6 Cevap php

Ben sadece bir forumu gezen ve birileri web üzerinde bulmuştu bir php dosyası hakkında sordu. Bu kod, bu gibi çeşitli noktalar vardır:

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

Ben her zaman parantez koşul doğruysa ne yapmak istediğinizi kapamak için gerekli olan düşündüm. Böyle o değil mi aynı hat üzerinde olduğu gibi diğer bazı alternatif var mı?

There is also another line like this: IF ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

Benim içgüdüsü bu iş olmaz demek, ama eski bir php dosyası olduğunu ve çalışmak için kullanılır eğer ben de bilmiyorum?

Herhangi bir giriş harika olurdu.

Thanks, Levi

6 Cevap

Eğer böyle ise başka ifadeler yapabilirsiniz:

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>



and then you can also write if - else in an alternate syntax:

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>



with the alternate syntax you can also fall out of parsing mode like this:

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it's value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

Ama bu gerçekten dağınık gerçekten çok hızlı olur ve ben (belki şablon-mantık hariç) kullanımı var tavsiye olmaz.



and to make it complete:

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>

Biraz daha detaya gitmek için, parantez isteğe bağlı olduğunu nedeni sözdizimi gibi görünüyor olduğunu:

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

BLOK tek bir deyim olabilir:

foo();

ya da tabloların bir kuşak-kapalı grup olabilir:

{
    foo();
    bar();
}

Bence

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

geçerli, ama daha okumak çok zordur:

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}

Parantez (parantez değil) PHP isteğe bağlıdır, çoğu C-benzeri sözdizimi gibi. Belki Perl düşünüyorsanız; eğer onlar sözdizimi bu form için, orada gerekli konum.

Kolon şey PHP destekleyen alternatif bir kontrol yapısı şeklidir. Ben nefret ediyorum, ama (görünüşe göre özellikle şablon sistem tasarımcıları,) bazı insanlar onu seviyorum.

brackets are needed to enclose what you want to do if the condition is true

Ben bu gerektiren herhangi bir dil düşünemiyorum

Evet, parantez hariç birçok kez, ancak ben bu sözdizimi kullanılarak değil 2 nedenlerini duymuş, izin verilir:

  1. Okumak daha zor. Başka bir programcı için daha az belirgin.
  2. Hiç o zaman en editörleri sizin için kapanış ayracı katacak beri ilk kodlama yaparken bu tarihten sonra zor parantez eklemeniz gerekir, eğer içinde bir şey eklemek wany eğer.

Ayrıca, evet, kolon sözdizimi geçerlidir. Alternatifler burada bulunabilir: http://php.net/manual/en/control-structures.alternative-syntax.php