Eliminación de matriz PHP por valor (no clave)
Tengo una matriz PHP como esta:
$messages = [312, 401, 1599, 3, ...];
Dado que los valores de la matriz son únicos , ¿cómo puedo eliminar el elemento con un valor determinado (sin conocer su clave)?
Usando array_search()
y unset
, intente lo siguiente:
if (($key = array_search($del_val, $messages)) !== false) {
unset($messages[$key]);
}
array_search()
devuelve la clave del elemento que encuentra, que se puede usar para eliminar ese elemento de la matriz original usando unset()
. Regresará FALSE
en caso de error, sin embargo, puede devolver un valor falso-y en caso de éxito (su clave puede ser, 0
por ejemplo), razón por la cual !==
se utiliza el operador de comparación estricta.
La if()
declaración verificará si array_search()
devolvió un valor y solo realizará una acción si lo hizo.
Bueno, eliminar un elemento de la matriz es básicamente solo establecer la diferencia con un elemento.
array_diff( [312, 401, 15, 401, 3], [401] ) // removing 401 returns [312, 15, 3]
Se generaliza muy bien, puedes eliminar tantos elementos como quieras al mismo tiempo, si lo deseas.
Descargo de responsabilidad: tenga en cuenta que mi solución produce una nueva copia de la matriz manteniendo la anterior intacta en contraste con la respuesta aceptada que muta. Elige el que necesitas.