Eliminar elementos de matriz vacíos
Algunos elementos de mi matriz son cadenas vacías de usuarios. $linksArray
todavía tiene elementos vacíos después de lo siguiente:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
La empty()
función tampoco funciona.
Como estás trabajando con una serie de cadenas, simplemente puedes usar array_filter()
, que maneja todo esto convenientemente por ti:
$linksArray = array_filter($linksArray);
Tenga en cuenta que si no se proporciona ninguna devolución de llamada , se eliminarán todas las entradas de la matriz iguales a FALSE
(consulte la conversión a booleano ). Entonces, si necesita conservar elementos que son, por ejemplo, una cadena exacta '0'
, necesitará una devolución de llamada personalizada:
// PHP 7.4 and later
print_r(array_filter($linksArray, fn($value) => !is_null($value) && $value !== ''));
// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));
Nota: Si necesita volver a indexar la matriz después de eliminar los elementos vacíos, utilice:
$linksArray = array_values(array_filter($linksArray));
Puedes usar array_filter
para eliminar elementos vacíos:
$emptyRemoved = array_filter($linksArray);
Si tiene (int) 0
en su matriz, puede usar lo siguiente:
$emptyRemoved = remove_empty($linksArray);
function remove_empty($array) {
return array_filter($array, '_remove_empty_internal');
}
function _remove_empty_internal($value) {
return !empty($value) || $value === 0;
}
EDITAR: Tal vez sus elementos no estén vacíos per se pero contengan uno o más espacios... Puede usar lo siguiente antes de usararray_filter
$trimmedArray = array_map('trim', $linksArray);