2016-12-03 2 views
0
echo result(1); 

function reslut($num) 
{ if($num == 1) return 0; if($num == 0) return 1; 

} 

Как это сделать без использования инструкции if или else?Как напечатать значение без if else

+1

'вернуться! $ Num'? – chepner

+0

Обратите внимание, что функция 'reslut' не имеет аргументов. Вы, наверное, хотели '$ num'. – Progrock

+0

И 'result' - это другое имя функции для' reslut'. – Progrock

ответ

-3

Использование троичной оператора, вы можете сделать это, но вы можете определить только одно условие

+0

Это действительно только комментарий. Чтобы дать ему ответ хотя бы показать пример – RiggsFolly

+0

Google это чувак. Просто google –

+1

@vikrammistry Это зависит от вас, если вы хотите опубликовать ответ. Но перестаньте считать, что публикация эквивалента «Google это» является разумным ответом. – chepner

0

Используйте оператор ?: следующим образом:

$num == 1 ? when_true_expression : when_false_expression; 

Вы можете гнездо этого оператора.

0

Вы могли бы просто использовать ! в функции так, как если рассматриваемая переменная либо 1 или 0 его в основном логическое

function result($num) 
{ 
    return (int)!$num; 
} 

$t = 0; 
$t = result($t); 
echo $t . PHP_EOL; 
$t = result($t); 
echo $t . PHP_EOL; 
$t = result($t); 
echo $t . PHP_EOL; 
$t = result($t); 
echo $t . PHP_EOL; 

Результат:

1 
0 
1 
0 
+0

Спасибо, дорогой frd –

0

Я отрегулирована ваша функция - дала ему имя result и добавила аргумент $num.

Обратите внимание, что на самом деле имеет три возможных значения возврата: 0, 1 и null.

Поскольку вы не используете идентичный оператор сравнения (скорее, вы используете равный оператор сравнения), вывод может быть не таким, как вы ожидаете, поскольку Php может выполнять манипуляцию типами.

Я добавил функцию, которая при условии ввода 1 вернет 0, и если входной сигнал 0 вернет 1, любой другой вход вернет значение null.

<?php 
// Your function. 
function result($num) 
{ 
    if($num == 1) 
     return 0; 
    if($num == 0) 
     return 1; 
} 

function swap_one_and_zero($num) 
{ 
    return in_array($num, [1,0], true) ? $num^1 : null; 
} 

$tests = [-1, 0, 1, 1.1, 2, 'a', 'foo', null]; 

var_export(
    array_map('result', $tests) 
); 

var_export(
    array_map('swap_one_and_zero',$tests) 
); 

Выходные массивы:

array (
    0 => NULL, 
    1 => 1, 
    2 => 0, 
    3 => NULL, 
    4 => NULL, 
    5 => 1, 
    6 => 1, 
    7 => 1, 
) 

array (
    0 => NULL, 
    1 => 1, 
    2 => 0, 
    3 => NULL, 
    4 => NULL, 
    5 => NULL, 
    6 => NULL, 
    7 => NULL, 
) 

я использовал контракт, если другое заявление с троичного оператора. И используется оператор побитового XOR, чтобы переключаться между 1 и 0.

Если у вас аллергия на IFS, вы могли бы заменить функцию с той же монетой с помощью инструкций переключателя:

function result($num) 
{ 
    switch($num) { 
     case 1: 
      return 0; 
      break; 
     case 0: 
      return 1; 
      break; 
    } 
}