2012-07-04 4 views
-1

У меня есть следующая функция $ _POST, чтобы проверить, пусто ли поля «start», «middle» и «end».

if(!empty($_POST['start'])) { 
    $description = "a sentence".$_POST['start']." with something in the START."; 
} 

if(!empty($_POST['middle'])) { 
    $description = "a sentence".$_POST['middle']." with something in the MIDDLE."; 
} 

if(!empty($_POST['end'])) { 
    $description .= "a sentence".$_POST['end']." with something in the END."; 
} 

Я хочу проверить значения в одной функции, другими словами, я хочу проверить несколько значений одновременно. Я видел несколько методов, но не уверен, какой из них прав, используя запятая или & & или ||, что-то вроде ниже ...

if(!empty($_POST['start']) , (!empty($_POST['middle']) , (!empty($_POST['end'])) 

или

if(!empty($_POST['start']) && (!empty($_POST['middle']) && (!empty($_POST['end'])) 

или

if(!empty($_POST['start']) || (!empty($_POST['middle']) || (!empty($_POST['end'])) 

Может кто-нибудь сказать мне правильный код для такого рода образования?

+0

Могут ли эти значения объединяются? Или всегда один/нет? – madfriend

+0

&& проверяет каждое условие, и если все верно, оно вернет true .... проверит первое условие, если его истинное значение вернет true else, проверьте второе условие. Если все являются ложными (ни один из них не является истинным), он вернет false .... и если вы, - то последнее условие справа будет быть оцененной, и если она истинна, то она вернет true else false. –

+3

Вы пробовали свои разные методы, чтобы узнать, что происходит, когда вы их запускаете? – andrewsi

ответ

2

здесь некоторые основные .. я сделал это в качестве комментария (как я не был уверен, что это вещь, которую вы просили), но я думаю, ответ будет быть в курсе нескольких деталей.

  • И-operatior

& & будет проверять все условия и, если все верно, то это возвращает истину ...

принять его как этот

if(FALSE && TRUE) 

это всегда будет возвращать False и если не будет выполняться, потому что одно из условий ложно

  • оператора ИЛИ

THe || проверит первое условие, если его истинное значение вернет true else, проверьте второе условие. Если все являются ложными (ни один из них не является истинным), он вернет false.

снова после предыдущего примера

if(TRUE || False || False) 

теперь компилятор проверяет первое условие, если его верно, то это будет игнорировать следующие два условия и возвращает истину.

if(FALSE || FALSE || FALSE) - это вернет ложь, как и все ложные

  • запятая Оператор

если вы , operatior, то последнее условие справа будет оцениваться, и если это правда, то он вернет true еще false

пример

if(True,True,True,False) - it will return false 

if(FALSE, TRUE, FALSE, TRUE) - it will return true 

поэтому выберите оператора в соответствии с вашей логикой.

ИСПОЛЬЗОВАТЬ:

if((!empty($_POST['start'])) && (!empty($_POST['start'])) && (!empty($_POST['start']))); 
+0

Спасибо за объяснение, но я все еще смущен. Я хочу проверить три значения ** 'start' **, ** 'middle' **, ** 'end' **, если все эти функции существуют, тогда передайте значение, иначе оставьте его пустым. Какой вариант подходит для моего состояния? – atif

+0

использование AND (&&) как будет проверять каждое условие. –

+0

Спасибо. Я думаю, что это функция, которую я искал. 'if (empty ($ _ POST ['start']) && empty ($ _ POST ['middle']) && empty ($ _ POST ['end']))' Я использовал **! Empty ** с ** && **, но он дал синтаксическую ошибку, когда я заменил **! empty ** на ** empty **, он прекратил давать синтаксическую ошибку, поэтому я надеюсь, что это сработает. – atif

2

Вы ищете что-то вроде:

// Establish valid post key values 
$valid_post_variables = array_flip(['start', 'middle', 'end']); 

// Fetch post data 
$post = $_POST; 

// $result will contain the values of post where the keys matched valid 
$result = array_intersect_key($post, $valid_post_variables); 

// if the resulting array contains our 3 options, its go time 
if (count($result) == 3) { 
    //start middle and end where all passed via POST 
} 
+0

Я так не думаю, это похоже на другую вещь. У меня уже есть функции обработки, я просто хочу проверить несколько значений одновременно с помощью одного оператора «if». – atif

+2

результат будет массивом, содержащим допустимые параметры почты, – Slukehart

0
function insertPost($before, $offset, $after) 
{ 
    if(!empty($_POST[$offset])) { 
     return $before . $_POST[$offset] . $after; 
    } 
    return ''; 
} 

$description = insertPost('a sentence', 'start', ' with something in the START.'); 
Смежные вопросы