Eliminación de matriz PHP por valor (no clave)

Resuelto Adam Strudwick asked hace 54 años • 21 respuestas

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)?

Adam Strudwick avatar Jan 01 '70 08:01 Adam Strudwick
Aceptado

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á FALSEen caso de error, sin embargo, puede devolver un valor falso-y en caso de éxito (su clave puede ser, 0por 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.

Bojangles avatar Aug 29 '2011 00:08 Bojangles

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.

Rok Kralj avatar May 04 '2012 19:05 Rok Kralj