2016-03-19 25 views
-2

Genellikle böyle if/else koşulu yaptı:Bir satırda durumu düzeltin mi?

if(empty($data['key'])) 
{ 
    $err = "empty . $key "; 
} 

ama ternary operator.

Gerçekten bu nasıl çalıştığını anlamıyorum .. Birisi bana bir örnek gösterilebilir olduğunu gördü? Bu durumu üçlü mantığa nasıl dönüştürebilirim?

+2

Üçlü operatör belgelenir ** çok fazla **. Gerçekten yeni bir soru açmanız mı gerekiyor? Neden Google değil? '$ var = (? : );' –

+0

bu şekilde olmalıdır: '$ var = (empty ($ data ['key']) $ error =" empty. $ key ": continue;'? –

+0

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary –

cevap

2

Kodunuzla ne yapmaya çalıştığınızdan emin değilim. Boş olup olmadığını denetleyin ve boş bir değer oluşturarak $err değerini bir değere ayarlamaya çalışın.

Belki de bu daha ne isteyebilirsiniz?

// Ternary operator 
$err = empty($data['key']) ? "empty key" : ''; 
# -----------IF-----------------THEN ---- ELSE 

// Ternary operator (nesting) (not recommended) 
// Changing empty() to isset() you must rewrite the entire logic structure. 
$err = empty($data) ? 'empty' : is_numeric($data) ? $data : 'not numeric'; 
# ---------IF--------- THEN -------ELSEIF-----------THEN-----ELSE 

// Null Coalescing operator ?? available in PHP 7. 
$err = $data['key'] ?? 'empty value'; 
# ---- IF ISSET USE --- ELSE value 

// Nesting 
$err = $data['key'] ?? $_SESSION['key'] ?? $_COOKIE['key'] ?? 'no key'; 
#  IF ISSET USE -- IF ISSET USE ------ IF ISSET USE ------ELSE 
+0

ve yapmak için birden fazla koşul var mı? Ben aynı değişken içinde mağaza istiyorum Demek istediğim boş çek is_numeric ve benzeri .. aynı err değişkeni içinde bunu nasıl yapabilirim? Teşekkürler –

+0

ve bir şey eklemek için '(boş ($ data) &&! Is_numeric ($ data)) mümkün mü? –

+2

Üçlü işlemler hızlı bir şekilde kod kirletir ve okumak için oldukça zor olduğu gibi tavsiye edilmez. Yukarıdaki yorumunuz gibi bir "if" ifadesini düzeltin (evet, mümkün) – Xorifelse