У меня есть логическая переменная, которую я хочу преобразовать в строку:
$res = true;
Мне нужно, чтобы преобразованное значение было в формате:, а "true" "false"
не"0" "1"
$converted_res = "true";
$converted_res = "false";
Я пробовал:
$converted_res = string($res);
$converted_res = String($res);
Но это говорит мне о том, что string
и String
не признаются функции.
Как мне преобразовать это логическое значение в строку в формате "true"
или "false"
в PHP?
Ответы:
Самое простое решение:
$converted_res = $res ? 'true' : 'false';
источник
?:
Обозначения наиболее упрощенный код можно придумать в этой ситуации.echo '<active>' . $res ? 'true' : 'false' . '</active>';
не дает желаемого результата,echo '<active>' . ($res ? 'true' : 'false') . '</active>';
делает.Функция var_export возвращает строковое представление переменной, так что вы можете сделать это:
Второй аргумент говорит функции возвращать строку, а не отображать ее.
источник
Еще один способ сделать:
json_encode( booleanValue )
источник
var_export()
более соответствует цели операции (если только не требуется строка для некоторого JSON, то есть ;-)См. Var_export
источник
edit
включите соответствующую информацию из ссылки в свой пост. Хотя эта информация полезна, ее более целесообразно оставить в качестве «комментария» к ФП. Вся необходимая информация по ссылке должна быть встроена в ответ. 1) Если ссылка станет недоступной, этот пост станет бесполезным. 2) посетители не должны посещать внешние ссылки, только чтобы сами это выяснить. Тем не менее, ссылки на документацию, источники или дополнительную информацию настоятельно рекомендуется. Спасибо за ваш вклад.Вы используете strval () или (string) для преобразования в строку в PHP. Однако это не преобразует логическое значение в фактическое написание «true» или «false», поэтому вы должны сделать это самостоятельно. Вот пример функции:
источник
$val = true;
тогдаstrval($val)
и(string) $val
оба вернутся 1.Другие решения здесь имеют свои предостережения (хотя они решают вопрос под рукой). Если вы (1) выполняете циклы по смешанным типам или (2) хотите общее решение, которое вы можете экспортировать как функцию или включить в свои утилиты, ни одно из других решений здесь не будет работать.
Самое простое и понятное решение:
Но большинству разработчиков, читающих ваш код, потребуется посещение http://php.net/var_export, чтобы понять, что
var_export
делает и что такое второй параметр.1.
var_export
Работает для
boolean
ввода, но также преобразует все остальноеstring
в.2.
($res) ? 'true' : 'false';
Работает для логического ввода, но преобразует все остальное (целые, строки) в true / false.
3.
json_encode()
Те же проблемы, что
var_export
и, вероятно, еще хуже, посколькуjson_encode
не могут знать, была ли строкаtrue
предназначена для строки или логического значения.источник
var_export()
кажется, лучше всего подходит для конкретного случая использования, спасибо.var_export(boolval($var), true)
- это безопасный способ преобразования значения в строки «true» или «false».if (is_bool($res) { $res = $res ? 'true' : 'false'; }
<< это не сработает -)
возможно, пропустить его лучше$result = (is_bool($var) && $var) ? 'true' : 'false';
$value = is_bool($value) ? var_export($value, true) : $value;
таким образом я сохраняю значение без изменений и меняю только логическое значение на их строковое представление.$res = $res
?? Возможно , вы имели в виду:$res == $res
? Или даже$res === $res
:?Почему просто так не делают?
источник
Для меня я хотел строковое представление, если оно не было
null
, и в этом случае я хотел, чтобы оно осталосьnull
.Проблема с var_export заключается в том, что он преобразуется
null
в строку,"NULL"
а также в пустую строку"''"
, что нежелательно. Не было простого решения, которое я мог найти.Это был код, который я наконец-то использовал:
Коротко и просто и легко добавить функцию, если вы предпочитаете.
источник
boolval()
работает для сложных таблиц, где объявление переменных и добавление циклов и фильтров не работают. Пример:где
$tmp
ключ используется для переноса других данных. Здесь я хотел, чтобы таблица отображала «Да» для 1 и ничего для 0, поэтому использовал(boolval($row['special_case']) ? 'Yes' : '')
.источник
boolval(some_expression) ? .. : ..
себя иначе, чемsome_expression ? .. : ..
?Это работает также для любого вида стоимости:
код:
источник
Отредактировано на основе предложения @ sebastian-norr, указывающего, что
$bool
переменная может быть или не быть истинной0
или1
. Например,2
разрешаетсяtrue
при запуске через логический тест в PHP.В качестве решения я использовал приведение типов, чтобы обеспечить преобразование
$bool
в0
или1
.Но я должен признать, что простое выражение
$bool ? 'true' : 'false'
намного чище.Мое решение, использованное ниже, никогда не должно использоваться, LOL.
Вот почему нет ...
Чтобы избежать повторения, массив, содержащий строковое представление логического значения, может храниться в константе, которая может быть доступна во всем приложении.
источник
Я не являюсь поклонником принятого ответа, поскольку он преобразует все, что оценивается как ложное, в
"false"
не просто логическое и наоборот.В любом случае, вот мой ответ OTT, он использует
var_export
функцию.var_export
работает со всеми типами переменных, за исключением тогоresource
, что я создал функцию, которая будет выполнять обычное приведение к string ((string)
), строгое приведение (var_export
) и проверку типа в зависимости от предоставленных аргументов.источник
источник
isset
не обязательно здесь. В phpif
-test ложно для обоихnull
иvariable not defined
. Можно просто сделать,$converted_res = ( $res ? 'true' : 'false' );
как видно из старых ответов.источник
Просто хотел обновить, в PHP> = 5.50 вы можете
boolval()
сделать то же самоеСсылка здесь .
источник
(bool) $var;
"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
boolval()
идет другим путем, преобразовывая переменную любого типа в bool, а не bool в string.