svn: /phpdoc/ru/trunk/language/ operators.xml

[email protected] (Sergey Panteleev) Sat, 28 Nov 2020 08:20:29 +0000
Newsgroups php.doc.ru
Message-ID <[email protected]>
sergey                                   Sat, 28 Nov 2020 08:20:29 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=351722

Log:
docs(ru): Updated to English revision

Changed paths:
    U   phpdoc/ru/trunk/language/operators.xml
svn-diffs-351722.txt (text/x-diff, 21.1 KB)
Modified: phpdoc/ru/trunk/language/operators.xml
===================================================================
--- phpdoc/ru/trunk/language/operators.xml	2020-11-28 08:08:43 UTC (rev 351721)
+++ phpdoc/ru/trunk/language/operators.xml	2020-11-28 08:20:29 UTC (rev 351722)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 351340 Maintainer: shein Status: ready -->
+<!-- EN-Revision: 351706 Maintainer: shein Status: ready -->
 <!-- $Revision$ -->
 <!-- Reviewed: yes -->
 <chapter xml:id="language.operators" xmlns="http://docbook.org/ns/docbook">
@@ -697,15 +697,15 @@
   </sect2>

   <sect2 role="seealso" xml:id="language.operators.assignment.see-also">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-      <member><link linkend="language.operators.arithmetic">арифметические операторы</link></member>
-      <member><link linkend="language.operators.bitwise">побитовые операторы</link></member>
-      <member><link linkend="language.operators.comparison.coalesce">операторы объединения с null</link></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <member><link linkend="language.operators.arithmetic">арифметические операторы</link></member>
+     <member><link linkend="language.operators.bitwise">побитовые операторы</link></member>
+     <member><link linkend="language.operators.comparison.coalesce">операторы объединения с null</link></member>
+    </simplelist>
+   </para>
+  </sect2>
  </sect1>

  <sect1 xml:id="language.operators.bitwise">
@@ -1358,20 +1358,20 @@
   </warning>

   <sect2 role="seealso">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-<!-- <link linkend="language.oop5.basic.class.class">::class</link> -->
-      <member><function>pack</function></member>
-      <member><function>unpack</function></member>
-      <member><function>gmp_and</function></member>
-      <member><function>gmp_or</function></member>
-      <member><function>gmp_xor</function></member>
-      <member><function>gmp_testbit</function></member>
-      <member><function>gmp_clrbit</function></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <!-- <link linkend="language.oop5.basic.class.class">::class</link> -->
+     <member><function>pack</function></member>
+     <member><function>unpack</function></member>
+     <member><function>gmp_and</function></member>
+     <member><function>gmp_or</function></member>
+     <member><function>gmp_xor</function></member>
+     <member><function>gmp_testbit</function></member>
+     <member><function>gmp_clrbit</function></member>
+    </simplelist>
+   </para>
+  </sect2>
  </sect1>

  <sect1 xml:id="language.operators.comparison">
@@ -1458,14 +1458,24 @@
    </tgroup>
   </table>
   <para>
-   В случае, если вы сравниваете число со строкой или две строки, содержащие числа,
-   каждая строка будет <link linkend="language.types.string.conversion">преобразована в
-   число</link>, и сравниваться они будут как числа. Эти правила также распространяются на
-   оператор <link linkend="control-structures.switch">switch</link>.
-   Преобразование типов не происходит при использовании === или !==
-   так как в этом случае кроме самих значений сравниваются еще и типы.
-   <informalexample>
-    <programlisting role="php">
+   В случае, если оба операнда являются
+   <link linkend="language.types.numeric-strings">строками, содержащими числа</link>
+   или один операнд является числом, а другой - <link linkend="language.types.numeric-strings">строкой, содержащей числа</link>,
+   то сравнение выполняется численно.
+   Эти правила также применяются к оператору <link linkend="control-structures.switch">switch</link>.
+   Преобразование типа не происходит при сравнении
+   <literal>===</literal> или <literal>!==</literal>, поскольку это включает сравнение
+   типа, а также значения.
+  </para>
+
+  <warning>
+   <para>
+    До PHP 8.0.0, если строка (<type>string</type>) сравнивалась с числом
+    или строкой, содержащей число, то строка (<type>string</type>) преобразовывалось
+    в число перед выполнением сравнения. Это могло привести к неожиданным
+    результатам, что можно увидеть на следующем примере:
+    <informalexample>
+     <programlisting role="php">
 <![CDATA[
 <?php
 var_dump(0 == "a"); // 0 == 0 -> true
@@ -1477,22 +1487,28 @@
 case 0:
     echo "0";
     break;
-case "a": // Эта ветка никогда не будет достигнута, так как "a" уже сопоставленно с 0
+case "a": // никогда не достигнет, потому что "a" уже совпало с 0
     echo "a";
     break;
 }
 ?>
 ]]>
-    </programlisting>
+     </programlisting>
+    </informalexample>
+   </para>
+  </warning>
+
+  <para>
+   <informalexample>
     <programlisting role="php">
 <![CDATA[
 <?php
-// Целые
+// Целые числа
 echo 1 <=> 1; // 0
 echo 1 <=> 2; // -1
 echo 2 <=> 1; // 1

-// С плавающей точкой
+// Числа с плавающей запятой
 echo 1.5 <=> 1.5; // 0
 echo 1.5 <=> 2.5; // -1
 echo 2.5 <=> 1.5; // 1
@@ -1525,7 +1541,7 @@
 $b = (object) ["a" => "b"];
 echo $a <=> $b; // 1

-// сравниваются не только значения; ключи должны соответствовать
+// сравниваются не только значения; ключи также должны совпадать
 $a = (object) ["a" => "b"];
 $b = (object) ["b" => "b"];
 echo $a <=> $b; // 1
@@ -1536,7 +1552,6 @@
     </programlisting>
    </informalexample>
   </para>
-
   <para>
    Для различных типов сравнение происходит в соответствии со следующей
    таблицей (по порядку).
@@ -1572,7 +1587,7 @@
      </row>
      <row>
       <entry><type>string</type>, <type>resource</type>, <type>int</type> или <type>float</type></entry>
-       <entry><type>string</type>, <type>resource</type>, <type>int</type> или <type>float</type></entry>
+      <entry><type>string</type>, <type>resource</type>, <type>int</type> или <type>float</type></entry>
       <entry>Строки и ресурсы переводятся в числа, обычная математика</entry>
      </row>
      <row>
@@ -1660,16 +1675,16 @@
   </warning>

   <sect2 role="seealso">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-      <member><function>strcasecmp</function></member>
-      <member><function>strcmp</function></member>
-      <member><link linkend="language.operators.array">Операторы, работающие с массивами</link></member>
-      <member><link linkend="language.types">Типы</link></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <member><function>strcasecmp</function></member>
+     <member><function>strcmp</function></member>
+     <member><link linkend="language.operators.array">Операторы, работающие с массивами</link></member>
+     <member><link linkend="language.types">Типы</link></member>
+    </simplelist>
+   </para>
+  </sect2>

   <sect2 xml:id="language.operators.comparison.ternary">
    <title>Тернарный оператор</title>
@@ -1741,10 +1756,10 @@
 // второго тернарного выражения.
 ?>
 ]]>
-      </programlisting>
-     </example>
-    </para>
-   </note>
+       </programlisting>
+      </example>
+     </para>
+    </note>
   </sect2>
   <sect2 xml:id="language.operators.comparison.coalesce">
    <title>Оператор объединения с null</title>
@@ -1803,10 +1818,10 @@

 ?>
 ]]>
-      </programlisting>
-     </example>
-    </para>
-   </note>
+       </programlisting>
+      </example>
+     </para>
+    </note>
   </sect2>
  </sect1>

@@ -1871,14 +1886,14 @@
   </warning>

   <sect2 role="seealso">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-      <member><function>error_reporting</function></member>
-      <member><link linkend="ref.errorfunc">Обработка ошибок и функции логирования</link></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <member><function>error_reporting</function></member>
+     <member><link linkend="ref.errorfunc">Обработка ошибок и функции логирования</link></member>
+    </simplelist>
+   </para>
+  </sect2>
  </sect1>

  <sect1 xml:id="language.operators.execution">
@@ -1913,18 +1928,18 @@
     будут работать внутри строк в двойных кавычках.
    </para>
   </note>
-
+
   <sect2 role="seealso">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-      <member><link linkend="ref.exec">Функции для выполнения программ</link></member>
-      <member><function>popen</function></member>
-      <member><function>proc_open</function></member>
-      <member><link linkend="features.commandline">Использование PHP в командной строке</link></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <member><link linkend="ref.exec">Функции для выполнения программ</link></member>
+     <member><function>popen</function></member>
+     <member><function>proc_open</function></member>
+     <member><link linkend="features.commandline">Использование PHP в командной строке</link></member>
+    </simplelist>
+   </para>
+  </sect2>
  </sect1>

  <sect1 xml:id="language.operators.increment">
@@ -2042,9 +2057,9 @@
 }
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 == Буквы ==
 X
@@ -2067,12 +2082,12 @@
 A13
 A14
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Инкрементирование или декрементирование булевых переменных не приводит ни к какому результату.
-  </para>
+   </screen>
+  </example>
+   </para>
+   <para>
+    Инкрементирование или декрементирование булевых переменных не приводит ни к какому результату.
+   </para>
  </sect1>

  <sect1 xml:id="language.operators.logical">
@@ -2177,8 +2192,8 @@
 bool(false)
 bool(true)
 ]]>
-   </screen>
-  </example>
+    </screen>
+   </example>
  </sect1>

  <sect1 xml:id="language.operators.string">
@@ -2207,16 +2222,16 @@
     </programlisting>
    </informalexample>
   </para>
-
+
   <sect2 role="seealso">
-    &reftitle.seealso;
-    <para>
-     <simplelist>
-      <member><link linkend="language.types.string">Строки</link></member>
-      <member><link linkend="ref.strings">Функции для работы со строками</link></member>
-     </simplelist>
-    </para>
-   </sect2>
+   &reftitle.seealso;
+   <para>
+    <simplelist>
+     <member><link linkend="language.types.string">Строки</link></member>
+     <member><link linkend="ref.strings">Функции для работы со строками</link></member>
+    </simplelist>
+   </para>
+  </sect2>
  </sect1>

  <sect1 xml:id="language.operators.array">
@@ -2328,16 +2343,16 @@
   string(6) "cherry"
 }
 ]]>
-   </screen>
-  </para>
-  <para>
-   При сравнении элементы массива считаются идентичными, если совпадает
-   и ключ, и соответствующее ему значение.
-  </para>
-  <para>
-   <example>
-    <title>Сравнение массивов</title>
-    <programlisting role="php">
+    </screen>
+   </para>
+   <para>
+    При сравнении элементы массива считаются идентичными, если совпадает
+    и ключ, и соответствующее ему значение.
+   </para>
+   <para>
+    <example>
+     <title>Сравнение массивов</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 $a = array("apple", "banana");
@@ -2347,11 +2362,11 @@
 var_dump($a === $b); // bool(false)
 ?>
 ]]>
-    </programlisting>
-   </example>
-  </para>
-
-  <sect2 role="seealso">
+     </programlisting>
+    </example>
+   </para>
+
+   <sect2 role="seealso">
     &reftitle.seealso;
     <para>
      <simplelist>
@@ -2393,15 +2408,15 @@
 bool(true)
 bool(false)
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Оператор <literal>instanceof</literal> также может быть использован
-   для определения, наследует ли определенный объект какому-либо классу:
-   <example>
-    <title>Использование <literal>instanceof</literal> с наследуемыми классами</title>
-    <programlisting role="php">
+     </screen>
+    </example>
+   </para>
+   <para>
+    Оператор <literal>instanceof</literal> также может быть использован
+    для определения, наследует ли определенный объект какому-либо классу:
+    <example>
+     <title>Использование <literal>instanceof</literal> с наследуемыми классами</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 class ParentClass
@@ -2418,24 +2433,24 @@
 var_dump($a instanceof ParentClass);
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 bool(true)
 bool(true)
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Для проверки <emphasis>непринадлежности</emphasis> объекта некоторому классу,
-   используйте <link linkend="language.operators.logical">логический оператор
-   <literal>not</literal></link>.
-   <example>
-    <title>Использование <literal>instanceof</literal> для проверки того, что объект
-     <emphasis>не</emphasis> является экземпляром класса</title>
-    <programlisting role="php">
+   </screen>
+  </example>
+   </para>
+   <para>
+    Для проверки <emphasis>непринадлежности</emphasis> объекта некоторому классу,
+    используйте <link linkend="language.operators.logical">логический оператор
+    <literal>not</literal></link>.
+    <example>
+     <title>Использование <literal>instanceof</literal> для проверки того, что объект
+      <emphasis>не</emphasis> является экземпляром класса</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 class MyClass
@@ -2446,22 +2461,22 @@
 var_dump(!($a instanceof stdClass));
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 bool(true)
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Наконец, <literal>instanceof</literal> может быть также использован для проверки
-   реализации объектом некоторого <link
-   linkend="language.oop5.interfaces">интерфейса</link>:
-   <example>
-    <title>Использование <literal>instanceof</literal> с интерфейсами</title>
-    <programlisting role="php">
+   </screen>
+  </example>
+   </para>
+   <para>
+    Наконец, <literal>instanceof</literal> может быть также использован для проверки
+    реализации объектом некоторого <link
+    linkend="language.oop5.interfaces">интерфейса</link>:
+    <example>
+     <title>Использование <literal>instanceof</literal> с интерфейсами</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 interface MyInterface
@@ -2478,22 +2493,22 @@
 var_dump($a instanceof MyInterface);
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 bool(true)
 bool(true)
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Хотя <literal>instanceof</literal> обычно используется с прямо указанным именем класса,
-   он также может быть использован с другим объектом или строковой переменной:
-   <example>
-    <title>Использование <literal>instanceof</literal> с другими переменными</title>
-    <programlisting role="php">
+   </screen>
+  </example>
+   </para>
+   <para>
+    Хотя <literal>instanceof</literal> обычно используется с прямо указанным именем класса,
+    он также может быть использован с другим объектом или строковой переменной:
+    <example>
+     <title>Использование <literal>instanceof</literal> с другими переменными</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 interface MyInterface
@@ -2514,24 +2529,24 @@
 var_dump($a instanceof $d); // $d - строка 'NotMyClass'
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 bool(true)
 bool(true)
 bool(false)
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Оператор instanceof не генерирует никаких ошибок, если проверяемая переменная не
-   является объектом. В этом случае он просто возвращает &false;. Константы, тем не менее,
-   не допускались до PHP 7.3.0.
-   <example>
-    <title>Пример использования оператора <literal>instanceof</literal> для проверки других переменных</title>
-    <programlisting role="php">
+   </screen>
+  </example>
+   </para>
+   <para>
+    Оператор instanceof не генерирует никаких ошибок, если проверяемая переменная не
+    является объектом. В этом случае он просто возвращает &false;. Константы, тем не менее,
+    не допускались до PHP 7.3.0.
+    <example>
+     <title>Пример использования оператора <literal>instanceof</literal> для проверки других переменных</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 $a = 1;
@@ -2543,9 +2558,9 @@
 var_dump(FALSE instanceof stdClass);
 ?>
 ]]>
-    </programlisting>
-    &example.outputs;
-    <screen>
+     </programlisting>
+     &example.outputs;
+     <screen>
 <![CDATA[
 bool(false)
 bool(false)
@@ -2552,14 +2567,14 @@
 bool(false)
 PHP Fatal error:  instanceof expects an object instance, constant given
 ]]>
-    </screen>
-   </example>
-  </para>
-  <para>
-   Начиная с PHP 7.3.0, константы разрешены в левой части оператора <literal>instanceof</literal>.
-   <example>
-    <title>Использование <literal>instanceof</literal> для проверки констант</title>
-    <programlisting role="php">
+   </screen>
+  </example>
+   </para>
+   <para>
+    Начиная с PHP 7.3.0, константы разрешены в левой части оператора <literal>instanceof</literal>.
+    <example>
+     <title>Использование <literal>instanceof</literal> для проверки констант</title>
+     <programlisting role="php">
 <![CDATA[
 <?php
 var_dump(FALSE instanceof stdClass);
@@ -2571,15 +2586,15 @@
 <![CDATA[
 bool(false)
 ]]>
-     </screen>
-   </example>
-  </para>
-
-  <simpara>
-   Оператор <literal>instanceof</literal> аналогичен функции <function>is_a</function>.
-  </simpara>
-
-  <sect2 role="seealso">
+   </screen>
+  </example>
+   </para>
+
+   <simpara>
+    Оператор <literal>instanceof</literal> аналогичен функции <function>is_a</function>.
+   </simpara>
+
+   <sect2 role="seealso">
     &reftitle.seealso;
     <para>
      <simplelist>