логические значения с PHP [дубликаты]

Dup некоторых основных вопросов PHP

Привет,

У меня есть куча полей tinyint в базе данных mysql, которые мне нужно показать с помощью PHP. На данный момент я делаю что-то вроде этого:

if ($row['PAYPAL_ACCEPT'] == "1"){

$paypal = "Yes";

else

$paypal = "No";

}

Для каждого поля, которое утомительно и кажется, что должен быть лучший способ, чем использование условия if для каждого поля. Если есть, что это?

0 php
10.12.2008 14:13:07
Тот же вопрос, что и третий, здесь: stackoverflow.com/questions/330709/… . Закрыто.
e-satis 10.12.2008 14:28:07
5 ОТВЕТОВ
РЕШЕНИЕ

Основываясь на том, что уже было предложено:

// $columns = string array of column names
// $columns = array('PAYPAL_ACCEPT' ... );
foreach($columns as $column) {
  $$column = $row[$column] ? 'YES' : 'NO';
}

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

print $PAYPAL_ACCEPT;
1
10.12.2008 14:32:55
Имеет ли это значение, что он включает столбцы, которые не были логическими?
user1253538 10.12.2008 14:45:44
Это зависит от того, что вы подразумеваете под не булевыми значениями, так как вы можете преобразовывать все виды данных в булевы значения в PHP. Если вы хотите, чтобы все переменные содержали YES или NO, вы можете использовать это. Опять же, я не уверен, что вы имеете в виду.
chriscena 10.12.2008 14:52:27

Попробуйте, если хотите:

$paypal = $row['PAYPAL_ACCEPT'] ? 'YES' : 'NO';
3
10.12.2008 14:15:39
Кстати, это называется троичный оператор: us3.php.net/language.operators.comparison .
lpfavreau 10.12.2008 14:20:43

Что-то вроде

$paypal = ($row['PAYPAL_ACCEPT'] ? "Yes" : "No");

может быть?

2
10.12.2008 14:16:30

Вы можете написать это короче, как:

$paypal = ($row['PAYPAL_ACCEPT']?'Yes':'No');
0
10.12.2008 14:17:51

или вы можете использовать не tinyint, а перечислить со значениями «Да» и «Нет», тогда простое поле вывода

$paypal = $row['PAYPAL_ACCEPT'];
0
10.12.2008 14:19:12