toggle en PHP

Agregar a favoritos

4 Comentarios

Posteado hace 534 días en:

Una de las cosas que utilizamos muy a menudo cuando desarrollamos es el uso de tablas o listas con clases alternas para mostrar información, con esto conseguimos distinguir con mayor facilidad los datos. Cada persona tiene su maña, algunos usan un true o false.

if($var) {
    $var = false;
    echo 'toggle';
} else {
    $var = true;
    echo 'toggle2';
}

Otros el tanto por ciento para saber si es par o impar.

if(($i + 1) % 2 == 0) echo '';
else echo 'toggle';

Así que he creado una pequeña función para facilitar esta tarea, puedes pasar los dos argumentos o solo el primero, pero si no pasas ninguno lo que haces es resetear para que la próxima vez que la llames empiece por el primer parámetro.

function toggle($one='',$two='') {
static $toggle = false;
$toggle = empty($one) && empty($two) ? true : $toggle;
$toggle = $toggle ? false : true;
return $toggle ? $one : $two;
}

Ejemplos de uso:

//alterna este valor con uno vacío
toggle('class="toggle" ');

//reseteas
toggle(); 

//alterna los dos valores
toggle('toggle','toggle2'); //devuelve toggle
toggle('toggle','toggle2'); //devuelve toggle2
toggle('toggle','toggle2'); //devuelve toggle

Puedes pasar los valores que quieras, la función no depende del valor ya que usa un booleano con una variable estática.


  • avatar

    xergio#1 hace 534 días

    Yo suelo usar algo más simple, $toggle = !$toggle;

    La inicializo con true o false y luego la voy alternando con eso.


  • avatar

    IceBeat#2 hace 533 días

    Vaya no conocia esa manera, para booleanos viene de miedo.

    De todas formas tienes que usar un condicional para mostrar o no el texto que quieres añadir.


  • avatar

    Ernesto Jiménez#3 hace 526 días

    @IceBeat por dar un poco por saco con RoR, mira esto :)

    http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M000518


  • avatar

    @ndreX!#4 hace 525 días

    Vendria mas facil un contador no?

    algo asi:

    $contador = 0; if($contador == 0){ $toogle1; $contador++; }else{ $toogle2; $contador=0; }