conjunto multidimensional unset

Estoy teniendo un infierno de esto. Tengo una matriz multidimensional que estoy almacenando en una sesión.

$d1 = array(1,2,3,4); $d2 = array(1,2,3,4,5,6); $d3 = array(1,2,3,4,5,6,7,8); $d4 = array(1,2,3,4,5); $_SESSION['array1'] = array($d1,$d2,$d3,$d4); 

lo que quiero hacer es eliminar la matriz $ d2 de la matriz de sesiones1

sin embargo, cuando hago algo como esto

 unset($_SESSION['array1'][1]); 

uno pensaría que $ _SESSION [‘array1’] sería = array ($ d1, $ d3, $ d4);

sin embargo, lo que hace es deshacer la variable de toda la sesión.

Entonces, si bash algo como

 foreach ($_SESSION['array1'] as $k => $v) { echo "The Key is $k: The Value is $v"; } 

sin embargo, eso me da un error

Invalid argument supplied for foreach()

La única conclusión a la que puedo llegar es que la variable de sesión está completamente desarmada, no solo que la clave específica se está eliminando de la matriz.

¿Hay alguna forma de que pueda desarmar un valor específico contenido dentro de una matriz que es parte de una variable de sesión?

El código que presenta funciona como se esperaba:

 header("Content-Type: text/plain"); session_start(); $d1 = array(1,2,3,4); $d2 = array(1,2,3,4,5,6); $d3 = array(1,2,3,4,5,6,7,8); $d4 = array(1,2,3,4,5); $_SESSION['array1'] = array($d1,$d2,$d3,$d4); unset($_SESSION['array1'][1]); print_R($_SESSION); 

Huellas dactilares:

 Array ( [array1] => Array ( [0] => Array ( ... ) [2] => Array ( ... ) [3] => Array ( ... ) ) ) 

Entonces algunas ideas de depuración:

  1. No use @session_start .
  2. Establecer error_reporting(E_ALL)
  3. Configurar informes de errores en php.ini
  4. Verifique sus cookies para ver si se envió la cookie PHPSESSID.

Use array_splice como se muestra en el siguiente código:

 $_SESSION['array1'] = array_splice($_SESSION['array1'],1,0); 

¿Qué tal si almacena su variable de sesión nuevamente?

 $_SESSION['array1'] = array($d1,$d3,$d4);