switch - php ternary operator
Los 3 iguales diferentes (4)
= operador de asignación
== comprueba si dos variables tienen el mismo valor
=== comprueba si dos variables tienen el mismo valor Y si sus tipos son los mismos
¿Cuál es la diferencia entre =
, ==
y ===
?
Creo que usar un signo igual es declarar una variable, mientras que dos signos iguales son para una condición de comparación y, por último, tres signos iguales son para comparar valores de variables declaradas.
Para los usuarios avanzados de PHP, saber la diferencia entre ==
y ===
y preguntarse "¿es más rápido comparar con ==
o con ===
cuando estoy seguro de que ambos operandos son del mismo tipo?"
La respuesta breve y general es: no hay ganancia de rendimiento en el uso de ===
en estos casos, por lo que probablemente deba usar ==
.
Para aquellos que estén interesados en la evaluación comparativa ellos mismos, puede usar el siguiente código. Escribí ad-hoc e intento valores diferentes para $a
y $b
:
<?php
// CONFIGURATION
$cycles = 1000000;
$a = ''random string 1'';
$b = ''random string 2'';
// FUNCTIONS
function compare_two_equals($a, $b) {
if ($a == $b) {
return TRUE;
} else {
return FALSE;
}
}
function compare_three_equals($a, $b) {
if ($a === $b) {
return TRUE;
} else {
return FALSE;
}
}
// EXECUTION
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
// RESULTS PRINTING
print "<br />/nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
print "<br />/nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
print "<br />/nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
print "<br />/nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
?>
NOTA: La comparación es válida solo cuando cada "PRIMER TRY" está muy cerca de su "SEGUNDO TIEMPO". Si son significativamente diferentes, significa que el procesador estaba ocupado haciendo otra cosa mientras ejecutaba las comparaciones y, por lo tanto, los resultados no son confiables y el punto de referencia debería volver a ejecutarse.
Usted tiene =
el operador de asignación , ==
el operador de comparación ''igual'' y ===
el operador de comparación ''idéntico'' .
$a = $b Assign Sets $a to be equal to $b.
$a == $b Equal TRUE if $a is equal to $b.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)
Para obtener más información sobre la necesidad de ==
y ===
, y las situaciones para usar cada uno, consulte los documentos .
-
=
es el operador de asignación -
==
es el operador de comparación (verifica si dos variables tienen valores iguales) -
===
es el operador de comparación idéntico (comprueba si dos variables tienen valores iguales y son del mismo tipo).