mirror of
https://github.com/php/doc-ru.git
synced 2025-08-20 23:31:15 +00:00
Обновление до английской версии
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 87b582706267d69006a8aaaed3b5eda2ccf99c92 Maintainer: shein Status: ready -->
|
||||
<!-- EN-Revision: c653d5a2b9b3a2671ca017c9f7ab6976fa8d148d Maintainer: shein Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<chapter xml:id="language.operators" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Операторы</title>
|
||||
@ -1729,7 +1729,7 @@ var_dump(min(-100, -10, NULL, 10, 100)); // NULL - (bool)NULL < (bool)-100 эт
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
// Так сравниваются массивы при сравнении стандартными операторами
|
||||
// Массивы сравниваются таким образом с помощью стандартных операторов сравнения, а также оператора spaceship.
|
||||
function standard_array_compare($op1, $op2)
|
||||
{
|
||||
if (count($op1) < count($op2)) {
|
||||
@ -1739,7 +1739,7 @@ function standard_array_compare($op1, $op2)
|
||||
}
|
||||
foreach ($op1 as $key => $val) {
|
||||
if (!array_key_exists($key, $op2)) {
|
||||
return null; // не могут быть сравнимы
|
||||
return 1;
|
||||
} elseif ($val < $op2[$key]) {
|
||||
return -1;
|
||||
} elseif ($val > $op2[$key]) {
|
||||
@ -1767,6 +1767,16 @@ function standard_array_compare($op1, $op2)
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<note>
|
||||
<simpara>
|
||||
Помните, что жонглирование типами в PHP не всегда очевидно при сравнении значений разных типов,
|
||||
особенно при сравнении целых чисел (&integer;) с логическими значениями (&boolean;)
|
||||
или целых чисел (&integer;) со строками (&string;).
|
||||
Поэтому в большинстве случаев рекомендуется использовать сравнения <literal>===</literal> и <literal>!==</literal>,
|
||||
а не <literal>==</literal> и <literal>!=</literal>.
|
||||
</simpara>
|
||||
</note>
|
||||
|
||||
<sect2 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
@ -1797,7 +1807,6 @@ if (empty($_POST['action'])) {
|
||||
} else {
|
||||
$action = $_POST['action'];
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
@ -1810,9 +1819,10 @@ if (empty($_POST['action'])) {
|
||||
</para>
|
||||
<para>
|
||||
Также стало возможным не писать среднюю часть
|
||||
тернарного оператора. Выражение <literal>expr1 ?: expr3</literal>
|
||||
возвращает <replaceable>expr1</replaceable> если <replaceable>expr1</replaceable>
|
||||
имеет значение &true; и <replaceable>expr3</replaceable> в противном случае.
|
||||
тернарного оператора. Выражение <literal>expr1 ?: expr3</literal> оценивается
|
||||
как результат <replaceable>expr1</replaceable>, если результат выражения <replaceable>expr1</replaceable> оценивается как &true;
|
||||
и <replaceable>expr3</replaceable> в противном случае.
|
||||
Выражение <replaceable>expr1</replaceable> в этом случае оценивается только один раз.
|
||||
</para>
|
||||
<note>
|
||||
<simpara>
|
||||
@ -1850,6 +1860,25 @@ echo ((true ? 'true' : false) ? 't' : 'f');
|
||||
// в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
|
||||
// второго тернарного выражения.
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
Цепочка коротких тернарных операторов (<literal>?:</literal>) стабильна и ведёт себя разумно.
|
||||
Она будет оценивать первый аргумент, который оценивается как не ложное значение.
|
||||
Обратите внимание, что неопределённые значения все равно вызовут предупреждение.
|
||||
<example>
|
||||
<title>Цепочка коротких тернарных операторов</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
echo 0 ?: 1 ?: 2 ?: 3, PHP_EOL; //1
|
||||
echo 0 ?: 0 ?: 2 ?: 3, PHP_EOL; //2
|
||||
echo 0 ?: 0 ?: 0 ?: 3, PHP_EOL; //3
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
@ -1860,7 +1889,7 @@ echo ((true ? 'true' : false) ? 't' : 'f');
|
||||
<sect2 xml:id="language.operators.comparison.coalesce">
|
||||
<title>Оператор объединения с null</title>
|
||||
<para>
|
||||
Также добавился новый оператор "??" (null coalescing).
|
||||
Другим полезным сокращённым оператором является оператор "??" (null coalescing).
|
||||
<example>
|
||||
<title>Присваивание значения по умолчанию</title>
|
||||
<programlisting role="php">
|
||||
@ -1875,7 +1904,6 @@ if (isset($_POST['action'])) {
|
||||
} else {
|
||||
$action = 'default';
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
@ -1896,6 +1924,22 @@ if (isset($_POST['action'])) {
|
||||
функции возвращающей ссылку будет не работать, а выводить предупреждение.
|
||||
</simpara>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
У оператора null coalescing низкий приоритет. Это означает, что при смешивании его с другими операторами
|
||||
(такими как конкатенация строк или арифметические операторы), скорее всего, потребуются круглые скобки.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
// Вызывает предупреждение о том, что $name не определено.
|
||||
print 'Mr. ' . $name ?? 'Anonymous';
|
||||
// Выведет "Mr. Anonymous"
|
||||
print 'Mr. ' . ($name ?? 'Anonymous');
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
Обратите внимание, что этот оператор позволяет использовать простую вложенность:
|
||||
|
Reference in New Issue
Block a user