Gracias por la respuesta. No, no conocía esa función, pero
funcionó.
De todas maneras me gustaría saber por qué el código anterior no funciona
El código modificado es:
Código PHP:
<?php
// Matriz tridimensional
$matriz3d = array(
0 => array(
'nombre' => 'Juan',
'apellido' => 'Perez',
'edad' => '23',
'intereses' => array('futbol', 'tenis', 'basquet')
),
1 => array(
'nombre' => 'Martin',
'apellido' => 'Pescador',
'edad' => '19',
'intereses' => array('futbol', 'cine')
),
2 => array(
'nombre' => 'Micaela',
'apellido' => 'Diaz',
'edad' => '25',
'intereses' => array('cine', 'hockey')
),
3 => array(
'nombre' => 'Paola',
'apellido' => 'Sanchez',
'edad' => '21',
'intereses' => 'libros'
)
);
$tag = 'futbol';
function sacaLaGrasa($sel)
{
global $tag;
if ( isset($sel['intereses']) )
{
if ( is_array($sel['intereses']) )
{
foreach ( $sel['intereses'] as $key => $val )
{
if ( $sel['intereses'][$key] == $tag )
{
return true;
}
elseif ( $val == end($sel['intereses']) )
{
return false;
}
else
{
continue;
};
};
}
else
{
if ( $sel['intereses'] == $tag )
{
return true;
}
else
{
return false;
};
};
}
else
{
return false;
};
};
echo '<pre>$matriz3d antes de llamar a la función'."\n";
print_r($matriz3d);
echo '</pre>'."\n";
$matriz3d = array_filter($matriz3d, 'sacaLaGrasa');
echo '<pre>$matriz3d luego de llamar a la función'."\n";
print_r($matriz3d);
echo '</pre>'."\n";
?>
Gracias de nuevo SetheR.