У меня есть несколько переменных: $ 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
?>
Вы можете написать функцию, чтобы повторять код снова и снова.
function yesNo(&$value){
$value = $value == true ? 'Yes' : 'No';
}
yesNo($car);
yesNo($tv);
Для изучения предложения мне кажется, что мне сложно усложнять функцию со ссылками. Поэтому я решил написать этот маленький пример как можно ближе к данному коду и без ссылок, но возвращать значения и без типов. 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));
}
?>
Счастливое кодирование.
Метод skroczek работал для меня в массиве, но мне пришлось обновить его до следующего:
function numberToString($n)
{
return $n == 1 ? 'YES' : 'NO';
}
==
и строгие ===
операторы немного отличаются. Подробнее об этом здесь: stackoverflow.com/questions/80646/…
$tv = $tv ? "YES" : "NO";