1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/language/types/boolean.xml
2025-10-13 00:35:00 +03:00

185 lines
5.9 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f90b26b377a61c76c0f64028e47553e550411d08 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.types.boolean">
<title>Логические значения</title>
<simpara>
Логический тип (<type>bool</type>) принимает только два значения,
которые выражают истинность: &true; или &false;.
</simpara>
<sect2 xml:id="language.types.boolean.syntax">
<title>Синтаксис</title>
<para>
Логические литералы — значения с типом <type>bool</type> — указывают константами &true;
или &false;. Обе константы регистронезависимы.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$foo = True; // Присвоить переменной $foo значение TRUE
?>
]]>
</programlisting>
</informalexample>
<para>
Часто результат выполнения <link linkend="language.operators">оператора</link>,
который возвращает логическое значение <type>bool</type>, передаётся
<link linkend="language.control-structures">управляющей конструкции</link>.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$action = "show_version";
$show_separators = true;
// == — оператор, который проверяет
// эквивалентность и возвращает логическое значение
if ($action == "show_version") {
echo "Версия 1.23";
}
// сравнение со значением true необязательно,...
if ($show_separators == TRUE) {
echo "<hr>\n";
}
// ...потому что у проверки следующего выражения тот же смысл:
if ($show_separators) {
echo "<hr>\n";
}
?>
]]>
</programlisting>
</informalexample>
</sect2>
<sect2 xml:id="language.types.boolean.casting">
<title>Преобразование в логический тип</title>
<simpara>
Оператор <literal>(bool)</literal> явно приводит значение
к логическому типу <type>bool</type>.
Обычно это не требуется, поскольку значение в логическом контексте
автоматически интерпретируется как значение логического типа <type>bool</type>.
Дополнительную информацию даёт раздел
«<link linkend="language.types.type-juggling">Жонглирование типами</link>».
</simpara>
<para>
При преобразовании в логическое значение <type>bool</type>,
следующие значения рассматриваются как
&false;:
</para>
<itemizedlist>
<listitem>
<simpara>
само значение <link linkend="language.types.boolean">boolean</link> &false;
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.integer">integer</link> <literal>0</literal> (ноль)
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.float">float</link> <literal>0.0</literal> (ноль)
и <literal>-0.0</literal> (минус ноль)
</simpara>
</listitem>
<listitem>
<simpara>
пустая <link linkend="language.types.string">строка</link> <literal>""</literal> и
<link linkend="language.types.string">строка</link> <literal>"0"</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.array">массив</link> без элементов
</simpara>
</listitem>
<listitem>
<simpara>
особый тип <link linkend="language.types.null">NULL</link> (включая
неустановленные переменные)
</simpara>
</listitem>
<listitem>
<simpara>
внутренние объекты, которые перегружают своё поведение приведения к логическому типу.
Например: объекты <link linkend="ref.simplexml">SimpleXML</link>,
которые создали из пустых элементов без атрибутов.
</simpara>
</listitem>
</itemizedlist>
<para>
Все остальные значения считаются &true;
(включая <link linkend="language.types.resource">resource</link>
и <constant>NAN</constant>).
</para>
<warning>
<simpara>
Число <literal>-1</literal> PHP оценивает как логическое значение &true;,
как и любое другое ненулевое —
отрицательное или положительное — число!
</simpara>
</warning>
<example>
<title>Приведение к логическому типу</title>
<programlisting role="php">
<![CDATA[
<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>
]]>
</programlisting>
</example>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->