variable tipos name igualar define declarar asignacion php variables

name - tipos de variables php



Forma correcta de declarar mĂșltiples vars en PHP (7)

$ a = [''foo'', ''bar'', ''ping'', ''pong'']; foreach ($ a as $ v) $$ v = '''';

//;)

He estado codificando guiones personales durante años en PHP y me acostumbré a desactivar la visualización de errores. Estoy a punto de lanzar algunos de estos scripts y me gustaría hacerlo de la manera correcta.

La única razón por la que desactivo la visualización de errores es para evitar tener que probar cada var, antes de usarla, gracias a isset ().

Ésta es mi pregunta:

¿Hay una mejor manera de declarar varios vars que esto?

<?php // at the begining of my main file if (!isset($foo)) ($foo = ''''); if (!isset($bar)) ($bar = ''''); if (!isset($ping)) ($ping = ''''); if (!isset($pong)) ($pong = ''''); // etc. for every single var ?>

Algo como esto, por ejemplo:

<?php var $foo, $bar, $ping, $pong; ?>


¡Su intento de if() con isset() es la forma correcta de hacerlo!

Pero puede escribirlo un poco más corto / más legible, utilizando el Operador Ternario :

$foo = isset($foo) ? $foo : '''';

El primer $foo se establecerá en el valor después de ? cuando la condición después de = es verdadera, de lo contrario se establecerá en el valor después de : La condición (entre = y ? ) Siempre se convertirá en booleana.

Desde PHP 5.3 puedes escribirlo aún más corto :

$foo = isset($foo) ?: '''';

Esto establecerá $foo en TRUE o FALSE (dependiendo de lo que isset() devuelva), tal como señala @Decent Dabbler en los comentarios. La eliminación de isset() lo establecerá en '''' pero también arrojará un aviso de variable indefinida (aunque no en producción).

Desde PHP 7 puedes usar un operador de coalescencia nulo:

$foo = $foo ?? '''';

Esto no generará ningún error, pero se evaluará como TRUE si $foo existe y está vacío, a diferencia del operador ternario de taquigrafía, que evaluará como FALSE si la variable está vacía.


¿Por qué no solo configurarlos?

<?php $foo = ''''; $bar = ''''; //etc ?>

Si intentas preservar el valor en ellos, entonces esa es la forma correcta en general. Tenga en cuenta que no necesita el segundo par de corchetes en sus estados de cuenta:

if (!isset($foo)) $foo = '''';

es suficiente.


Lo publiqué en un comentario anterior, pero alguien sugirió que lo envíe como respuesta.

La forma más corta y simple en que puedo pensar es hacer:

$foo = $bar = $ping = $pong = '''';

A menudo prefiero configurar cosas en falso, en lugar de una cadena vacía, para que siempre puedas hacer comprobaciones en el futuro con === falso, pero eso es solo una preferencia y depende de cómo uses estas variables y para qué.


Para solucionar el problema de

<?php $foo = $bar = $ping = $pong = ''''; ?>

lanzamiento

Aviso: variable indefinida: ...

<?php @$foo = $bar = $ping = $pong = ''''; ?>

No lo arreglará, pero no se mostrará y no detendrá la secuencia de comandos de análisis.


Una forma un tanto redonda de hacer esto es si coloca el nombre de sus variables en una matriz y luego las powtac con un Operador Ternario, similar a la respuesta de powtac .

$vars = array(''foo'', ''bar'', ''ping'', ''pong''); $defaultVar = ''''; foreach($vars as $var) { $$var = isset($$var) ? $$var : $defaultVar; }

Como se menciona en otras respuestas, desde la versión 5.3, PHP le permite escribir el código anterior de la siguiente manera:

$vars = array(''foo'', ''bar'', ''ping'', ''pong''); $defaultVar = ''''; foreach($vars as $var) { $$var = isset($$var) ?: $defaultVar; }

Tenga en cuenta el operador ternario cambiado.


<?php $foo = $bar = $ping = $pong = ''''; ?>

Si es su script y sabe qué variables usa, ¿por qué quiere gastar recursos para comprobar si la variable fue declarada antes?