2015-02-27 5 views
-1

Я пытаюсь получить массив значений, если один или оба условия возвращает истину, например:Если один или оба условия истинно

$emailarr = array('[email protected]', '[email protected]', '[email protected]');  
foreach ($emailarr as $email) { 
    if ($email !== '[email protected]' || '[email protected]'){ 
    echo 'Email Send to '. $email ; 
    } 
} 

что на самом деле мне нужно, это

if only ([email protected]) return true 
If only ([email protected]) return true 
if both ([email protected] and [email protected]) return true 

спасибо заранее.

+0

Мой лучший совет - практиковать и читать php.net, прежде чем задавать вопросы. –

ответ

0

Вам не нужно "как" состояние, вам нужно только "либо".

Вы также можете использовать if (in_array($email, array(email1, email2...)) {...}

(В Еогеасп, «как» не произойдет в той же итерации.)

+0

Да, это действительно работает. спасибо Патрику. –

1

Просто изменить логику к этому:

if ($email == '[email protected]' || $email == '[email protected]'){ 
    echo 'Email Send to '. $email ; 
} 

Выход:

Email Send to [email protected] 
Email Send to [email protected] 
+0

Что делать, если мне не нужны оба значения, но только [email protected]? –

+0

@ user3501918 С условием ИЛИ только один должен быть правдой, поэтому ваш полностью штраф – Rizier123

0

Я не уверен, что вы хотите сделать, но один из способов добиться того, что вам нужно:

$emails = ['[email protected]', '[email protected]', '[email protected]']; 

if (count($emails) == 1) { 
    if (in_array('[email protected]', $emails)) { 
     return true; 
    } else if (in_array('[email protected]', $emails)) { 
     return true; 
    } 
} else if ((count($emails) == 2) && (in_array('[email protected]', $emails)) && (in_array('[email protected]', $emails))) { 
    return true; 
} 

return false; 

Кроме того, это не очень хорошая практика, чтобы добавить тип объекта к имени переменной, как вы делали в «$ email_arrays»; $ email просто отлично.

Смежные вопросы