Відмінності між версіями «Оператори порівняння PHP»
(не показано 4 проміжні версії ще одного учасника) | |||
Рядок 2: | Рядок 2: | ||
<p>Это в своем роде уникальные операции, потому что независимо от типов своих аргументов они всегда возвращают одно из двух: <strong>false</strong> или <strong>true</strong>. Операции сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают <strong>true</strong>, а если нет — <strong>false</strong>.</p> | <p>Это в своем роде уникальные операции, потому что независимо от типов своих аргументов они всегда возвращают одно из двух: <strong>false</strong> или <strong>true</strong>. Операции сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают <strong>true</strong>, а если нет — <strong>false</strong>.</p> | ||
− | <p>В PHP разрешается сравнивать только скалярные переменные. Массивы и объекты в PHP сравнивать нельзя. Их даже нельзя сравнивать на равенство (при помощи оператора ==), но при выполнении такой операции PHP не выдает предупреждения. Так что удивившись как-то раз, почему два совершенно разных массива при сравнении их с помощью <strong>==</strong> оказываются вдруг одинаковыми, вспомните, что перед сравнением оба операнда преобразуются в слово <a | + | <p>В PHP разрешается сравнивать только скалярные переменные. Массивы и объекты в PHP сравнивать нельзя. Их даже нельзя сравнивать на равенство (при помощи оператора ==), но при выполнении такой операции PHP не выдает предупреждения. Так что удивившись как-то раз, почему два совершенно разных массива при сравнении их с помощью <strong>==</strong> оказываются вдруг одинаковыми, вспомните, что перед сравнением оба операнда преобразуются в слово <a<strong>array</strong></a>, которое потом и сравнивается.</p> |
− | + | ||
<p>Также вам возможно будет интересно ознакомиться с разделом <A href="/learnphp/datatypes/?compare_tables" target="_blank">сравнение типов</A>, в котором приведено большое количество соответствующих примеров.</p> | <p>Также вам возможно будет интересно ознакомиться с разделом <A href="/learnphp/datatypes/?compare_tables" target="_blank">сравнение типов</A>, в котором приведено большое количество соответствующих примеров.</p> | ||
− | <p> | + | <p>'''Оператори порівняння''':</p> |
+ | |||
+ | <TABLE border=1 cellpadding="3" cellspacing="1" bgcolor="#000066"> | ||
− | |||
− | |||
− | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TH width="76">Пример</TH> | <TH width="76">Пример</TH> | ||
Рядок 15: | Рядок 13: | ||
<TH width="516">Результат</TH> | <TH width="516">Результат</TH> | ||
</TR> | </TR> | ||
− | |||
− | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
Рядок 22: | Рядок 18: | ||
<TD>Равно</TD> | <TD>Равно</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a равно $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a равно $b.</TD> | ||
− | |||
</TR> | </TR> | ||
+ | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a === $b</TD> | <TD>$a === $b</TD> | ||
Рядок 35: | Рядок 31: | ||
<TD><TT><B>TRUE</B></TT> если $a не равно $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a не равно $b.</TD> | ||
</TR> | </TR> | ||
− | |||
+ | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a <> $b</TD> | <TD>$a <> $b</TD> | ||
<TD>Не равно</TD> | <TD>Не равно</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a не равно $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a не равно $b.</TD> | ||
</TR> | </TR> | ||
− | |||
+ | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a !== $b</TD> | <TD>$a !== $b</TD> | ||
<TD>Тождественно не равно</TD> | <TD>Тождественно не равно</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4) </TD> | <TD><TT><B>TRUE</B></TT> если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4) </TD> | ||
</TR> | </TR> | ||
+ | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a < $b</TD> | <TD>$a < $b</TD> | ||
− | |||
<TD>Меньше</TD> | <TD>Меньше</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a строго меньше $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a строго меньше $b.</TD> | ||
</TR> | </TR> | ||
+ | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a > $b</TD> | <TD>$a > $b</TD> | ||
− | |||
<TD>Больше</TD> | <TD>Больше</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a строго больше $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a строго больше $b.</TD> | ||
</TR> | </TR> | ||
+ | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a <= $b</TD> | <TD>$a <= $b</TD> | ||
<TD>Меньше или равно</TD> | <TD>Меньше или равно</TD> | ||
− | |||
<TD><TT><B>TRUE</B></TT> если $a is меньше или равно $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a is меньше или равно $b.</TD> | ||
</TR> | </TR> | ||
+ | |||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a >= $b</TD> | <TD>$a >= $b</TD> | ||
<TD>Больше или равно</TD> | <TD>Больше или равно</TD> | ||
<TD><TT><B>TRUE</B></TT> если $a больше или равно $b.</TD> | <TD><TT><B>TRUE</B></TT> если $a больше или равно $b.</TD> | ||
− | |||
</TR> | </TR> | ||
+ | |||
</TABLE> | </TABLE> | ||
+ | |||
<p>В случае, если вы сравниваете целое со строкой, строка будет <A | <p>В случае, если вы сравниваете целое со строкой, строка будет <A | ||
href="/learnphp/datatypes/?mn#strtoint" target="_blank">преобразована к числу</A>. В случае, если вы сравниваете две числовые строки, они сравниваются как целые числа.</p> | href="/learnphp/datatypes/?mn#strtoint" target="_blank">преобразована к числу</A>. В случае, если вы сравниваете две числовые строки, они сравниваются как целые числа.</p> | ||
− | + | <CODE><SPAN style="COLOR: #000000"><SPAN | |
− | style="COLOR: #0000bb"><?php <BR> | + | style="COLOR: #0000bb"><?php <BR> |
− | + | var_dump</SPAN><SPAN | |
− | style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">0 </SPAN><SPAN | + | style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">0 </SPAN><SPAN |
− | style="COLOR: #007700">== </SPAN><SPAN style="COLOR: #dd0000">"a"</SPAN><SPAN | + | style="COLOR: #007700">== </SPAN><SPAN style="COLOR: #dd0000">"a"</SPAN><SPAN |
− | style="COLOR: #007700">); </SPAN><SPAN | + | style="COLOR: #007700">); </SPAN><SPAN |
− | style="COLOR: #ff8000">// 0 == 0 -> true <BR> | + | style="COLOR: #ff8000">// 0 == 0 -> true <BR> |
− | + | </SPAN><SPAN | |
− | + | style="COLOR: #0000bb">var_dump</SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN | |
− | + | style="COLOR: #dd0000">"1" </SPAN><SPAN style="COLOR: #007700">== </SPAN><SPAN | |
− | style="COLOR: #0000bb">var_dump</SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN | + | style="COLOR: #dd0000">"01"</SPAN><SPAN style="COLOR: #007700">); </SPAN><SPAN |
− | style="COLOR: #dd0000">"1" </SPAN><SPAN style="COLOR: #007700">== </SPAN><SPAN | + | style="COLOR: #ff8000">// 1 == 1 -> true <BR> |
− | style="COLOR: #dd0000">"01"</SPAN><SPAN style="COLOR: #007700">); </SPAN><SPAN | + | <BR> |
− | style="COLOR: #ff8000">// 1 == 1 -> true <BR> | + | </SPAN><SPAN |
− | + | style="COLOR: #007700">switch (</SPAN><SPAN | |
− | + | style="COLOR: #dd0000">"a"</SPAN><SPAN | |
− | + | style="COLOR: #007700">) { <BR> | |
− | + | case </SPAN><SPAN | |
− | style="COLOR: #007700">switch (</SPAN><SPAN | + | style="COLOR: #0000bb">0</SPAN><SPAN |
− | style="COLOR: #dd0000">"a"</SPAN><SPAN | + | style="COLOR: #007700">: <BR> |
− | style="COLOR: #007700">) { <BR> | + | echo </SPAN><SPAN |
− | + | style="COLOR: #dd0000">"0"</SPAN><SPAN | |
− | + | style="COLOR: #007700">; <BR> | |
− | style="COLOR: #0000bb">0</SPAN><SPAN | + | break; <BR> |
− | style="COLOR: #007700">: <BR> | + | case </SPAN><SPAN |
− | + | style="COLOR: #dd0000">"a"</SPAN><SPAN style="COLOR: #007700">: </SPAN><SPAN | |
− | style="COLOR: #dd0000">"0"</SPAN><SPAN | + | style="COLOR: #ff8000">// Эта ветка никогда не будет достигнута, так как "a" уже сопоставленно с 0 <BR> |
− | style="COLOR: #007700">; <BR> | + | </SPAN><SPAN |
− | + | style="COLOR: #007700">echo </SPAN><SPAN style="COLOR: #dd0000">"a"</SPAN><SPAN | |
− | + | style="COLOR: #007700">; <BR> | |
− | style="COLOR: #dd0000">"a"</SPAN><SPAN style="COLOR: #007700">: </SPAN><SPAN | + | |
− | style="COLOR: #ff8000">// Эта ветка никогда не будет достигнута, так как "a" уже сопоставленно с 0 <BR> | + | |
− | + | ||
− | + | ||
− | + | ||
− | style="COLOR: #007700">echo </SPAN><SPAN style="COLOR: #dd0000">"a"</SPAN><SPAN | + | |
− | style="COLOR: #007700">; <BR> | + | |
break; <BR> | break; <BR> | ||
} <BR> | } <BR> | ||
</SPAN><SPAN | </SPAN><SPAN | ||
− | style="COLOR: #0000bb">?></SPAN></SPAN></CODE | + | style="COLOR: #0000bb">?></SPAN></SPAN></CODE> |
− | <p> | + | <p>'''Ще одним умовним оператором є <ins>тернарний оператор</ins> "<strong>?</strong>":'''</p> |
− | + | <CODE><SPAN style="COLOR: #000000"><SPAN | |
− | style="COLOR: #0000bb"><?php<BR> | + | style="COLOR: #0000bb"><?php<BR> |
− | </SPAN><SPAN | + | </SPAN><SPAN |
− | style="COLOR: #ff8000">// | + | style="COLOR: #ff8000">// Приклад використання тернарного оператора<BR> |
− | </SPAN><SPAN | + | </SPAN><SPAN |
− | style="COLOR: #0000bb">$action </SPAN><SPAN | + | style="COLOR: #0000bb">$action </SPAN><SPAN |
− | style="COLOR: #007700">= (empty(</SPAN><SPAN | + | style="COLOR: #007700">= (empty(</SPAN><SPAN |
− | style="COLOR: #0000bb">$_POST</SPAN><SPAN style="COLOR: #007700">[</SPAN><SPAN | + | style="COLOR: #0000bb">$_POST</SPAN><SPAN style="COLOR: #007700">[</SPAN><SPAN |
− | style="COLOR: #dd0000">'action'</SPAN><SPAN | + | style="COLOR: #dd0000">'action'</SPAN><SPAN |
− | style="COLOR: #007700">])) ? </SPAN><SPAN | + | style="COLOR: #007700">])) ? </SPAN><SPAN |
− | style="COLOR: #dd0000">'default' </SPAN><SPAN | + | style="COLOR: #dd0000">'default' </SPAN><SPAN |
− | style="COLOR: #007700">: </SPAN><SPAN style="COLOR: #0000bb">$_POST</SPAN><SPAN | + | style="COLOR: #007700">: </SPAN><SPAN style="COLOR: #0000bb">$_POST</SPAN><SPAN |
− | style="COLOR: #007700">[</SPAN><SPAN style="COLOR: #dd0000">'action'</SPAN><SPAN | + | style="COLOR: #007700">[</SPAN><SPAN style="COLOR: #dd0000">'action'</SPAN><SPAN |
− | style="COLOR: #007700">];<BR> | + | style="COLOR: #007700">];<BR> |
+ | <BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #ff8000">// Запропонованний вище код подібен наступному блоку з використанням if/else<BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #007700">if (empty(</SPAN><SPAN | ||
+ | style="COLOR: #0000bb">$_POST</SPAN><SPAN style="COLOR: #007700">[</SPAN><SPAN | ||
+ | style="COLOR: #dd0000">'action'</SPAN><SPAN | ||
+ | style="COLOR: #007700">])) {<BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #0000bb">$action </SPAN><SPAN | ||
+ | style="COLOR: #007700">= </SPAN><SPAN | ||
+ | style="COLOR: #dd0000">'default'</SPAN><SPAN | ||
+ | style="COLOR: #007700">;<BR> | ||
+ | } else {<BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #0000bb">$action </SPAN><SPAN | ||
+ | style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">$_POST</SPAN><SPAN | ||
+ | style="COLOR: #007700">[</SPAN><SPAN style="COLOR: #dd0000">'action'</SPAN><SPAN | ||
+ | style="COLOR: #007700">];<BR> | ||
+ | }<BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #0000bb">?></SPAN></SPAN></CODE> | ||
− | < | + | <p>Выражение <VAR>(expr1) ? (expr2) : (expr3)</VAR> интерпретируется как <VAR>expr2</VAR>, если <VAR>expr1</VAR> вычисляется в <TT><B>TRUE</B></TT>, или как <VAR>expr3</VAR> если <VAR>expr1</VAR> вычисляется в <TT><B>FALSE</B></TT>.</p> |
− | < | + | |
− | + | ||
− | </ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | </ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Оператори мови PHP]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Поточна версія на 08:16, 7 травня 2010
Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения.
Это в своем роде уникальные операции, потому что независимо от типов своих аргументов они всегда возвращают одно из двух: false или true. Операции сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают true, а если нет — false.
В PHP разрешается сравнивать только скалярные переменные. Массивы и объекты в PHP сравнивать нельзя. Их даже нельзя сравнивать на равенство (при помощи оператора ==), но при выполнении такой операции PHP не выдает предупреждения. Так что удивившись как-то раз, почему два совершенно разных массива при сравнении их с помощью == оказываются вдруг одинаковыми, вспомните, что перед сравнением оба операнда преобразуются в слово <aarray</a>, которое потом и сравнивается.
Также вам возможно будет интересно ознакомиться с разделом <A href="/learnphp/datatypes/?compare_tables" target="_blank">сравнение типов</A>, в котором приведено большое количество соответствующих примеров.
Оператори порівняння:
Пример | Название | Результат |
---|---|---|
$a == $b | Равно | TRUE если $a равно $b. |
$a === $b | Тождественно равно | TRUE если $a равно $b и имеет тот же тип. (Добавлено в PHP 4) |
$a != $b | Не равно | TRUE если $a не равно $b. |
$a <> $b | Не равно | TRUE если $a не равно $b. |
$a !== $b | Тождественно не равно | TRUE если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4) |
$a < $b | Меньше | TRUE если $a строго меньше $b. |
$a > $b | Больше | TRUE если $a строго больше $b. |
$a <= $b | Меньше или равно | TRUE если $a is меньше или равно $b. |
$a >= $b | Больше или равно | TRUE если $a больше или равно $b. |
В случае, если вы сравниваете целое со строкой, строка будет <A href="/learnphp/datatypes/?mn#strtoint" target="_blank">преобразована к числу</A>. В случае, если вы сравниваете две числовые строки, они сравниваются как целые числа.
<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
switch ("a") {
case 0:
echo "0";
break;
case "a": // Эта ветка никогда не будет достигнута, так как "a" уже сопоставленно с 0
echo "a";
break;
}
?>
Ще одним умовним оператором є тернарний оператор "?":
<?php
// Приклад використання тернарного оператора
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// Запропонованний вище код подібен наступному блоку з використанням if/else
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
Выражение (expr1) ? (expr2) : (expr3) интерпретируется как expr2, если expr1 вычисляется в TRUE, или как expr3 если expr1 вычисляется в FALSE.