2012-03-11 21 views
31

¿Cómo puedo inicializar múltiples variables de PHP con un valor de cero simultáneamente sin usar una matriz? Deseo escribir código que es esencialmente equivalente a la siguiente:Inicializando múltiples variables PHP simultáneamente

$first = 0; 
$second = 0; 
$third = 0; 
$fourth = 0; 
+0

Posible duplicado de [Asignar el mismo valor a múltiples variables] (http://stackoverflow.com/questions/11651594/assign-same-value-to-multiple-variables) –

Respuesta

62
$first = $second = $third = $fourth = 0; 
+0

¿Esto no se encuentra con el problema que cuando cambias $ cuarto, ¿también cambias el resto? – Alec

+2

Si cambia '$ fourth', no cambiará el resto, porque' 0' es un valor, no una referencia. Si hubieras hecho algo como '$ fourth = 0; $ third = y $ fourth; $ second = y $ fourth; $ first = & $ fourth', entonces todas las demás variables serían referencias a '$ fourth' (no el valor' 0'), y el cambio '$ fourth' también se reflejaría en las otras variables. – rid

+5

Esta asignación múltiple funciona porque, en PHP, la asignación es una expresión que devuelve el valor asignado. Por lo tanto, '$ fourth = 0' es una expresión que devuelve el valor' 0'. Este valor se asigna a '$ third' y, dado que esta asignación también es una expresión, el valor de retorno de asignar' 0' a '$ third' vuelve a ser el valor' 0', etc. – rid

15

Si bien es factible para inicializar múltiples variables utilizando un operador coma dentro de un bucle for, de la siguiente manera:

<?php 
for ($a=0,$b=0,$c=0,$d=0;;) { 
    break; 
} 
var_dump($a,$b,$c,$d); 

(Ver demo here)

lista constructo proporciona una forma más eficiente de realizar múltiples variables de culo ignment, como se ilustra en el siguiente ejemplo:

<?php 

list($first, $second, $third, $fourth) = array(0, 0, 0, 0); 
var_dump($first, $second, $third, $fourth); 

Ver demostración de here

Uno puede desear reconsiderar evitando el uso de matrices para lograr múltiples variables inicializadas. Con PHP7.1 + uno puede escribir más simple, código robusto si uno utiliza array destructuring disponible con la sintaxis de matrices corta, de la siguiente manera:

<?php 

[$first, $second, $third, $fourth ] = [0, 0, 0, 0]; 
var_dump($first, $second, $third, $fourth); 

Ver demostración de here.

Si se necesita estar seguro de que las variables que se inicializaron no se hayan establecido previamente, consulte este discussion relacionado, particularmente este response.

+1

Puede usar este método para declarar múltiples variables con diferentes valores, y eso hace que esto sea mucho más útil. – Alec

+0

@Alec Esto es un poco confuso para declarar variables con valores diferentes. –

Cuestiones relacionadas