2012-05-11 12 views
6

El problema es simple, pero estoy buscando una solución creativa. Nos encontramos a menudo matrices, objetos que tienen una propiedad que se puede activar (puede ser activa o inactiva, 1 o 0).PHP - alternar estado

Lo que quiero es una solución creativa (una función) para transformar 0 a 1 y 1 a 0.

Algunos ejemplos:

// First 
if ($state == 1) 
{ 
    $state = 0; 
} 
else 
{ 
    $state = 1; 
} 

// Second 
$states = array(1, 0); 
$state = $states[$state]; 

// Third 
$state = ($state == 1) ? 0 : 1; 

¿Hay alguna otra solución de una línea para este? Gracias, y disfrute de la lluvia de ideas.

+1

http://stackoverflow.com/questions/4603589/boolean-value-switch-invert – djot

Respuesta

20

Usted puede hacer:

$state = 1 - $state; 
+2

Me gusta esto. ¡Muy simple! –

1

Si se permite que el resultado sea un valor lógico (y que no tiene por qué ser un swap entero) se puede utilizar el operador de negación:

<?php 
$state = 0; 
var_dump(!$state); 

$state = 1; 
var_dump(!$state); 

salida:

bool(true) 
bool(false) 
+0

Buena idea. Si es necesario, se puede hacer un molde de tipo: (int) (! $ State); –

3

probar este código: $state = !$state