@masterojitos, esas funciones son para destruir una sesión. Lo que
juandedios pregunta es como eliminar UNA sola variable.
@Genetix, al darle un valor de vacío a la variable, la función isset() aplicada sobre ella seguirá devolviendo true. Examinen este código y vean todas las posibles formas de eliminar una variable y de pseudoeliminarla:
Código PHP:
<?php
session_start();
echo '<pre>';
// Esto crea una variable
$_SESSION['variable'] = 'valor';
echo "<b>Estado de la variable original</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true porque la variable si existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime false porque la variable tiene un contenido
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
echo "\n";
// Esto no elimina la variable
$_SESSION['variable'] = '';
echo "<b>Estado de la variable asignandole un valor vacío ''</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true porque la variable si existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true porque la variable está vacía, pero eso no significa que ya no existe
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
echo "\n";
// tampoco la elimina
$_SESSION['variable'] = false;
echo "<b>Estado de la variable asignandole un valor de falso false</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true, pues la variable existe y tiene asignado el valor booleano false
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, pues la variable no tiene un contenido, tiene un valor booleano
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
echo "\n";
// Esto no la elimina
$_SESSION['variable'] = 0;
echo "<b>Estado de la variable asignandole un valor de 0</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true, porque la variable existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, porque la variable no tiene un contenido de texto, sino es un entero
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
echo "\n";
// Esto sí la elimina
unset($_SESSION['variable']);
echo "<b>Estado de la variable pasándole la función unset()</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime false, porque la variable ya no existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, porque la variable no tiene un contenido (no existe)
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
echo "\n";
// Esto tambien la elimina
$_SESSION['variable'] = null;
echo "<b>Estado de la variable asignandole un valor de NULL</b> \n";
echo "isset(): ";
var_dump( isset( $_SESSION['variable'] ) );
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) );
echo "var_dump(): ";
var_dump( $_SESSION['variable'] );
?>
Imprime:
Código:
Estado de la variable original
isset(): bool(true)
empty(): bool(false)
var_dump(): string(5) "valor"
Estado de la variable asignandole un valor vacío ''
isset(): bool(true)
empty(): bool(true)
var_dump(): string(0) ""
Estado de la variable asignandole un valor de falso false
isset(): bool(true)
empty(): bool(true)
var_dump(): bool(false)
Estado de la variable asignandole un valor de 0
isset(): bool(true)
empty(): bool(true)
var_dump(): int(0)
Estado de la variable pasándole la función unset()
isset(): bool(false)
empty(): bool(true)
var_dump(): NULL
Estado de la variable asignandole un valor de NULL
isset(): bool(false)
empty(): bool(true)
var_dump(): NULL
Con esto vemos que sólo asignándole un valor NULL o aplicando la función
unset() podremos eliminar realmente una variable.
Saludos,
EDITO: var_dump() se usa para imprimir el valor de una variable y el tipo de elemento que representa. Muy útil a la hora de programar y usar diversos tipos de variables.