Files
php-doc-ru/appendices/comparisons.xml
Andrey Gromov f122e092c8 upd
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@341803 c90b9560-bf6c-de11-be94-00142212c4b1
2017-01-29 09:07:10 +00:00

648 lines
19 KiB
XML
Raw 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: 0ade9d91c1e45a8afef45c9ee514fccdc1900ca1 Maintainer: shein Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<appendix xml:id="types.comparisons" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Таблица сравнения типов в PHP</title>
<para>
Следующие таблицы демонстрируют работу PHP с
<link linkend="language.types">типами переменных</link> и
<link linkend="language.operators.comparison">операторами сравнения</link>, как в
случае свободного, так и в случае строгого сравнения. Также эта информация относится
к разделу документации по <link linkend="language.types.type-juggling">приведению
типов</link>. Вдохновением на создание этого раздела мы обязаны различным комментариям
пользователей и работе над
<link xlink:href="&url.blueshoes.comparisons;">BlueShoes</link>.
</para>
<para>
До осмотра таблиц, важно знать и понимать типы переменных и их значения.
К примеру, <literal>"42"</literal> - <type>string</type>,
в то время как <literal>42</literal> - <type>integer</type>. &false; -
<type>boolean</type>, а <literal>"false"</literal> - <type>string</type>.
</para>
<note>
<para>
HTML-формы не передают целые, дробные числа или булевые переменные: они всегда
передают строки. Для проверки является ли строка числом, используйте функцию
<function>is_numeric</function>.
</para>
</note>
<note>
<para>
Использование <literal>if ($x)</literal>, если <varname>$x</varname> не
определена, сгенерирует ошибку уровня <constant>E_NOTICE</constant>.
Вместо этого используйте функцию <function>empty</function> или
<function>isset</function> и/или инициализируйте переменную.
</para>
</note>
<note>
<para>
Некоторые арифметические операции могут вернуть значение,
представленное константой <constant>NAN</constant> (Not A Number,
не-число). Любое строгое или нестрогое сравнение этого значения
с каким-либо другим, включая его самого, но исключая &true;, вернет &false; (т.е.
<literal>NAN != NAN</literal> и <literal>NAN !== NAN</literal>).
Примерами операций, возвращающих <constant>NAN</constant>, являются
<literal>sqrt(-1)</literal>, <literal>asin(2)</literal> и <literal>acosh(0)</literal>.
</para>
</note>
<para>
<table>
<title>Сравнение типов <varname>$x</varname> и результатов функций PHP, связанных с типами</title>
<tgroup cols="6">
<thead>
<row>
<entry>Выражение</entry>
<entry><function>gettype</function></entry>
<entry><function>empty</function></entry>
<entry><function>is_null</function></entry>
<entry><function>isset</function></entry>
<entry><type>boolean</type> : <literal>if($x)</literal></entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>$x = "";</literal></entry>
<entry><type>string</type></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = null;</literal></entry>
<entry><type>NULL</type></entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>var $x;</literal></entry>
<entry><type>NULL</type></entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><varname>$x</varname> не определена</entry>
<entry><type>NULL</type></entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = array();</literal></entry>
<entry><type>array</type></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = array('a', 'b');</literal></entry>
<entry><type>array</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = false;</literal></entry>
<entry><type>boolean</type></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = true;</literal></entry>
<entry><type>boolean</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = 1;</literal></entry>
<entry><type>integer</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = 42;</literal></entry>
<entry><type>integer</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = 0;</literal></entry>
<entry><type>integer</type></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = -1;</literal></entry>
<entry><type>integer</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = "1";</literal></entry>
<entry><type>string</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = "0";</literal></entry>
<entry><type>string</type></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>$x = "-1";</literal></entry>
<entry><type>string</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = "php";</literal></entry>
<entry><type>string</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = "true";</literal></entry>
<entry><type>string</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>$x = "false";</literal></entry>
<entry><type>string</type></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
<table xml:id="types.comparisions-loose">
<title>Гибкое сравнение с помощью <literal>==</literal></title>
<tgroup cols="12">
<thead>
<row>
<entry> </entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry><literal>1</literal></entry>
<entry><literal>0</literal></entry>
<entry><literal>-1</literal></entry>
<entry><literal>"1"</literal></entry>
<entry><literal>"0"</literal></entry>
<entry><literal>"-1"</literal></entry>
<entry>&null;</entry>
<entry><literal>array()</literal></entry>
<entry><literal>"php"</literal></entry>
<entry><literal>""</literal></entry>
</row>
</thead>
<tbody>
<row>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>1</literal></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>0</literal></entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>-1</literal></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"1"</literal></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"0"</literal></entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"-1"</literal></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry>&null;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
</row>
<row>
<entry><literal>array()</literal></entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"php"</literal></entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>""</literal></entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
<table xml:id="type.comparisons-strict">
<title>Жесткое сравнение с помощью <literal>===</literal></title>
<tgroup cols="12">
<thead>
<row>
<entry> </entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry><literal>1</literal></entry>
<entry><literal>0</literal></entry>
<entry><literal>-1</literal></entry>
<entry><literal>"1"</literal></entry>
<entry><literal>"0"</literal></entry>
<entry><literal>"-1"</literal></entry>
<entry>&null;</entry>
<entry><literal>array()</literal></entry>
<entry><literal>"php"</literal></entry>
<entry><literal>""</literal></entry>
</row>
</thead>
<tbody>
<row>
<entry>&true;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>1</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>0</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>-1</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"1"</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"0"</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"-1"</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry>&null;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>array()</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>"php"</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
<entry>&false;</entry>
</row>
<row>
<entry><literal>""</literal></entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&false;</entry>
<entry>&true;</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</appendix>
<!-- 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
-->