Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/06/2016, 08:54
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: eliminar elementos de array multidimensional

Otra opción es que uses array_filter de forma recursiva.
Código PHP:
Ver original
  1. $array = [
  2.     0 =>
  3.         [
  4.             "email" => "[email protected]",
  5.             "timestamp" => "1337966810",
  6.             "category" =>
  7.                 [
  8.                     0 => "survey78399_",
  9.                     1 => "transactional",
  10.                 ],
  11.  
  12.             "event" => "delivered",
  13.         ],
  14.  
  15.     1 =>
  16.         [
  17.             "email" => "[email protected]",
  18.             "timestamp" => "1337966855",
  19.             "category" =>
  20.                 [
  21.                     0 => "survey78399",
  22.                     1 => "transactional",
  23.                 ],
  24.  
  25.             "event" => "spam",
  26.         ],
  27.  
  28.     2 =>
  29.         [
  30.             "email"=> "[email protected]",
  31.             "timestamp" => "1337966899",
  32.             "category" =>
  33.                 [
  34.                     0 => "survey8888",
  35.                     1 => "transactional",
  36.                 ],
  37.  
  38.             "event" => "open",
  39.         ],
  40.  
  41.     3 =>
  42.         [
  43.             "email" => "[email protected]",
  44.             "timestamp" => "1337966899",
  45.             "category" => "survey78399",
  46.             "event" => "open",
  47.         ]
  48. ];
  49.  
  50. $search = 'survey78399';
  51.  
  52. $callback = function($item) use (&$callback, &$search) {
  53.     if (is_array($item)) {
  54.         return array_filter($item, $callback);
  55.     }else {
  56.         return $item == $search;
  57.     }
  58. };
  59.  
  60. $filtered = array_filter($array, $callback);
  61.  
  62. print_r($filtered); // imprime solo key 1 y 3 del arreglo original
  63. /*
  64. Array
  65. (
  66.     [1] => Array
  67.         (
  68.             [email] => [email protected]
  69.             [timestamp] => 1337966855
  70.             [category] => Array
  71.                 (
  72.                     [0] => survey78399
  73.                     [1] => transactional
  74.                 )
  75.  
  76.             [event] => spam
  77.         )
  78.  
  79.     [3] => Array
  80.         (
  81.             [email] => [email protected]
  82.             [timestamp] => 1337966899
  83.             [category] => survey78399
  84.             [event] => open
  85.         )
  86.  
  87. )
  88.  
  89. */
Te recomiendo que leas el manual ya que php cuenta con funciones muy útiles para trabajar con arreglos
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.