single one php shorthand

single - php if one sentence



Descripción general de taquigrafía PHP (9)

He estado programando en PHP desde hace años, pero nunca aprendí a usar taquigrafía. Lo encuentro de vez en cuando en el código y me cuesta leerlo, así que me gustaría aprender las diferentes taquigrafías que existen para el idioma, de modo que pueda leerlo y comenzar a ahorrar tiempo / líneas al usarlo, pero Parece que no puedo encontrar una descripción completa de toda la taquigrafía.

Una búsqueda en Google muestra casi exclusivamente la forma abreviada de declaraciones if / else, pero sé que debe haber más que eso.

Por taquigrafía, estoy hablando de cosas como:

($var) ? true : false;


¿Nadie lo mencionó ?? !

<?php // Example usage for: Null Coalesce Operator $action = $_POST[''action''] ?? ''default''; // The above is identical to this if/else statement if (isset($_POST[''action''])) { $action = $_POST[''action'']; } else { $action = ''default''; }


Desde 5.4 también tienes literales de matriz por lo que ya no necesitas escribir:

$myArray = array(''some'', ''list'', ''of'', ''stuff'');

Puedes escribir:

$myArray = [''some'', ''list'', ''of'', ''stuff''];

No es una gran diferencia, pero es bastante agradable.


Esto se llama el operador ternario , un operador booleano que tiene tres operandos:

La primera es la expresión booleana para evaluar.

El segundo es la expresión para ejecutar si la expresión booleana se evalúa como VERDADERO.

La tercera es la expresión para ejecutar si la expresión booleana se evalúa como FALSA.


Estos son algunos de los operadores de taquigrafía utilizados en PHP.

//If $y > 10, $x will say ''foo'', else it''ll say ''bar'' $x = ($y > 10) ? ''foo'' : ''bar''; //Short way of saying <? print $foo;?>, useful in HTML templates <?=$foo?> //Shorthand way of doing the for loop, useful in html templates for ($x=1; $x < 100; $x++): //Do something end for; //Shorthand way of the foreach loop foreach ($array as $key=>$value): //Do something; endforeach; //Another way of If/else: if ($x > 10): doX(); doY(); doZ(); else: doA(); doB(); endif; //You can also do an if statement without any brackets or colons if you only need to //execute one statement after your if: if ($x = 100) doX(); $x = 1000; // PHP 5.4 introduced an array shorthand $a = [1, 2, 3, 4]; $b = [''one'' => 1, ''two'' => 2, ''three'' => 3, ''four'' => 4];


PHP 5.3 presentado:

$foo = $bar ?: $baz;

que asigna el valor de $bar a $foo si $bar evalúa como true (else $baz ).

También puede anidar el operador ternario (con el uso adecuado de paréntesis).

Aparte de eso, no hay mucho más al respecto. Es posible que desee leer la documentation .


Por lo tanto, Jacob Relkin tiene toda la razón en que la "taquigrafía" que mencionas se llama de hecho el operador "ternario", y como Sam Dufel agrega, es muy frecuente en otros idiomas. Dependiendo de cómo lo implemente el lenguaje, incluso puede ser más rápido para el servidor interpretar la lógica, así como permitirte leerla más rápidamente.

Entonces, a veces, lo que ayuda cuando estás aprendiendo una nueva lógica o los nuevos operadores como este es pensar en el inglés (o cualquiera que sea tu idioma nativo) que se ajuste a él. Descríbalo en una oracion Veamos tu ejemplo:

($var) ? true : false;

Lo que esto debería decir es:

¿Es $ var cierto? Si $ var es, devuelve el valor verdadero . Si $ var es falso, devuelve el valor falso .

El signo de interrogación ayuda a recordarle que está haciendo una pregunta que determina la salida.

Un caso de uso más común para el operador ternario es cuando está revisando algo que no es necesariamente un booleano, pero puede usar una lógica booleana para describirlo. Tomemos como ejemplo el objeto Car , que tiene una propiedad llamada color , que es una variable tipo cadena (en PHP). No puede preguntar si una cadena es verdadera o falsa porque eso no tiene sentido, pero puede formular diferentes preguntas al respecto:

$output = $car->color == "blue" ? "Wheee this car is blue!" : "This car isn''t blue at all."; echo $output;

Entonces esta línea dice lo siguiente:

¿El color del automóvil es el mismo que el del cordón "azul"?
Si es así, devuelve la cadena "¡Si este auto es azul!" , de lo contrario, devuelva la cadena "Este auto no es azul en absoluto".

Lo que sea que devuelva el operador ternario se usa en el lado derecho de una declaración de asignación con $ salida, y esa cadena se imprime.


También nuevo en PHP7 es el operador de nave espacial. Principalmente útil en devoluciones de llamadas para cosas como usort() .

Antes de:

usort($list, function ($a, $b) { if ($a == $b) return 0; return $a < $b; });

Después:

usort($list, function ($a, $b) { return $a <=> $b; });

Básicamente, devuelve un entero negativo, 0 o un entero positivo basado en la comparación del lado izquierdo con el lado derecho.


Uno de mis "trucos" favoritos en PHP es utilizar el operador de la matriz de conjuntos cuando se trata de situaciones tales como funciones que toman una serie de argumentos, recurriendo a valores predeterminados.

Por ejemplo, considere la siguiente función que acepta una matriz como argumento, y necesita saber que las claves ''color'' , ''shape'' y '' size '' están establecidas. Pero tal vez el usuario no siempre sabe cuáles serán, por lo que desea proporcionarles algunos valores predeterminados.

En un primer intento, uno podría intentar algo como esto:

function get_thing(array $thing) { if (!isset($thing[''color''])) { $thing[''color''] = ''red''; } if (!isset($thing[''shape''])) { $thing[''shape''] = ''circle''; } if (!isset($thing[''size''])) { $thing[''size''] = ''big''; } echo "Here you go, one {$thing[''size'']} {$thing[''color'']} {$thing[''shape'']}"; }

Sin embargo, usar el operador de matriz de matriz puede ser una buena "taquigrafía" para hacer este limpiador. Considera la siguiente función. Tiene exactamente el mismo comportamiento que el primero, pero es más claro:

function get_thing_2(array $thing) { $defaults = array( ''color'' => ''red'', ''shape'' => ''circle'', ''size'' => ''big'', ); $thing += $defaults; echo "Here you go, one {$thing[''size'']} {$thing[''color'']} {$thing[''shape'']}"; }

Otra cosa divertida son las funciones anónimas (y los cierres, introducidos en PHP 5.3). Por ejemplo, para multiplicar cada elemento de una matriz por dos, puede hacer lo siguiente:

array_walk($array, function($v) { return $v * 2; });


<?php class Bob { public function isDebug(){ return true; } public function debug(){ echo ''yes dice!!!''; } } $bob = new Bob(); ($bob->isDebug()) && $bob->debug();

Aquí hay otra versión de taquigrafía. Espero que esto ayude a alguien