конвертировать 1/0 значения в YES / NO в php

1

У меня есть несколько переменных: $ tv, $ car, $ холодильник, $ laptop и $ desktop, которые принимают значения 0/1, чтобы указать наличие или отсутствие YES/NO.

Есть ли простой способ конвертировать их из 1/0 в YES/NO?

Что-то, что делает ниже проще

<?php
 $tv = 1;
 $car = 0;
 $refrigerator = 1;
 $laptop = 1;
 $desktop = 0;

 if($tv == 1)
  $tv = "YES";
 else
  $tv = "NO";
 print($tv);


 if($car == 1)
  $car = "YES";
 else
  $car= "NO";
 print($car);

 //Repeat so on for refrigerator, laptop , desktop
?>
  • 5
    $tv = $tv ? "YES" : "NO";
Теги:
boolean

3 ответа

2
Лучший ответ

Вы можете написать функцию, чтобы повторять код снова и снова.

function yesNo(&$value){
    $value = $value == true ? 'Yes' : 'No';
}

yesNo($car);
yesNo($tv);
2

Для изучения предложения мне кажется, что мне сложно усложнять функцию со ссылками. Поэтому я решил написать этот маленький пример как можно ближе к данному коду и без ссылок, но возвращать значения и без типов. 1 и 0 являются целыми числами, а не булевыми переменными. Поэтому мы будем использовать оператор сравнения === чтобы избежать жонглирования типа:

<?php

/**
 * Convert number to 1 to'YES' or everything else to 'NO'.
 * @param $n the number to convert.
 * @return string YES|NO
 */
function numberToString($n)
{
    return $n === 1 ? 'YES' : 'NO';
}

$tv = 1;
$car = 0;
$refrigerator = 1;
$laptop = 1;
$desktop = 0;

// Call numberToString function for $tv and print return value
print(numberToString($tv));

// Call numberToString function for $car and print return value
print(numberToString($car));

// Call numberToString function for $refrigerator and print return value
print(numberToString($refrigerator));

// Call numberToString function for $laptop and print return value
print(numberToString($laptop));

// Call numberToString function for $desktop and print return value
print(numberToString($desktop));

?>

И если вам повезет, вы также можете использовать массив с foreach:

<?php

/**
 * Convert number to 1 to'YES' or everything else to 'NO'.
 * @param $n the number to convert.
 * @return string YES|NO
 */
function numberToString($n)
{
    return $n === 1 ? 'YES' : 'NO';
}

// For php >= 5.4 you can also use the new array syntax:
// $devices = [
//     'tv' => 1,
//     'car' => 0,
//     'refrigerator' => 1,
//     'laptop' => 1,
//     'desktop' => 0,
// ];

$devices = array(
    'tv' => 1,
    'car' => 0,
    'refrigerator' => 1,
    'laptop' => 1,
    'desktop' => 0,
);

foreach ($devices as $device) {
    // Call numberToString function for $tv and print return value
    print(numberToString($device));
}

?>

Счастливое кодирование.

0

Метод skroczek работал для меня в массиве, но мне пришлось обновить его до следующего:

function numberToString($n)
{
    return $n == 1 ? 'YES' : 'NO';
}
  • 1
    Слабые == и строгие === операторы немного отличаются. Подробнее об этом здесь: stackoverflow.com/questions/80646/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню