($ ext == ('zip' | | 'png')) {echo "Bu mümkün mü?"

8 Cevap php

Ben şu anda bir indirme yöneticisi çeşit yazıyorum ve eğer mümkün olduğunu kendime soruyordum:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" }

Bu gerçek her şey verir, bu yüzden mümkün değil sanırım. Ama ben bunu kolayca yapabilir hakkında bir fikrin var mı? Yani, not "eğer" veya "switch" bol ...

Yine de teşekkürler! :)

8 Cevap

Eğer kullanabilirsiniz in_array($ext,array('png','zip','another','more'))

buraya bakın: http://php.net/manual/en/function.in-array.php

En az bir boş değil çünkü, DOĞRU verir> ('zip' || 'png'), - if($ext == ('zip' || 'png')) aşağıdaki sırayla karşılaştırma yapıyor. Yerine o şimdi, ($ext == TRUE), ben bir uzuv çıkmak ve php sadece bu da doğrudur olurdu ($ext), hangi olarak aynı değerlendirmekte olduğunu tahmin için gidiyorum hangi.

if ( $ext == 'zip' || $ext == 'png' ) sizin için ne arıyor kontrol edecektir.

Sen normal ifadeleri kullanabilirsiniz, örneğin

if(preg_match("/^(zip|png)$/", $ext) { echo “It is possible!” }

İlgili soru: Checking for file-extensions in PHP with Regular expressions

if (($ ext == 'zip') | | ($ ext == 'png')) {echo "Bu mümkün." }

Bu kesinlikle mümkün, ama ne orada yapıyoruz yanlış kodudur. Burada ne olduğunu yazdı:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" }

Ve işte o php çevirir budur:

if( (if $ext evaluates to true then return true) == ( if 'zip' evaluates to true then return true || if 'png' evaluates to true then return true ) )

'Zip' php tanımlanan 'boş' veya 'yanlış' değerlerden biri değil, ve 'png' olduğu ne beri deyimi Yani, temelde bu koşuyoruz:

if($ext == true)

Hangi boş değilse, öyle.

Ne istiyorum - Daha önce belirtildiği gibi:

if($ext == 'zip' || $ext == 'png')

Bir switch-case deyimi ile gidebiliriz:

switch($ext)
{ 
  case 'png':
  case 'zip':
       // Will run for both 'png' and 'zip'
       echo "It is possible";
       break;
  default:
       echo "unknown extension!";
       break;
 }

Tiny tavsiyem: PHP aslında sıfır olmayan herhangi bir değer varsa-deyim koşullu kesiminde ikamet halinde "gerçek" olarak kabul edilir bir anlamda C boolean tipi işleme benzer kullanmaktadır. Örneğin '=' operatörü olarak dönecekti çünkü karşılaştırabilirsiniz inşaat ve tipi if($var = "val") yerine if($var == "val") hep bu deyimi gerçek bir değer alacak arasında '=' sembolü özledim olsaydı by-turn olan sağ kısmında "val" den set operasyon değerin bir sonucu 'gerçek' dönüştürülür. bu yüzden karşılaştırmak durumda if("val" == $var) neden sol kısmında literal yazmak daha iyidir Eğer gevşek bir '==' in '=' sembolü karşılaştırırsanız bu koşulda bir hata olacaktı.

so your if-statement have to look like this: if('zip' == $ext || 'png' == $ext) { echo "Is it possible ?" }

Ayrıca muhtemelen bu isimler FILE_TYPE_ZIP, FILE_TYPE_PNG ile sabitler 'zip' ve 'png' değişmezleri koymak veya kaynak sayfasının en üstünde ya da belki de bazı ayrı yaratmak bulunduğu küresel PHP-dizi gibi bazı numaralandırılmış-varlık tanımlamak için daha iyi olurdu Programınızın desteklenen dosya türlerini vurgulamak istiyorum dış dosyasında sınıf SupportedFileTypes (bu durumda http://stackoverflow.com/questions/254514/php-and-enums ayrıntılar için check out).

performans sorusunu geliştirme başında okumak ve gelişmeye / gelecekte optimize etmek kolaydır kod yazmak için çok önemlidir neden sizi rahatsız etmek zorunda değildir.

if (in_array($ext, array('png', 'zip'))) {
    echo "Is it possible ?"
}

Bunu birden çok kez gerekiyorsa dizisi, bir yerde saklanabilir.