Creo que array_search es un código mucho más legible que usar el método array_diff. Votación a favor
kendepelchin
@zombat Me pregunto si el orden tiene algo que ver con los resultados. Es posible que shuffle ponga el valor que estamos buscando más cerca del frente o del final. Aparte de eso ... +1
Sería la solución más poderosa array_filter, que le permite definir su propia función de filtrado.
Pero algunos podrían decir que es un poco exagerado, en su situación ...
Un simple foreachciclo para recorrer la matriz y eliminar el elemento que no desea debería ser suficiente.
Algo como esto, en su caso, probablemente debería hacer el truco:
foreach($items as $key => $value){if($value == $id){
unset($items[$key]);// If you know you only have one line to remove, you can decomment the next line, to stop looping//break;}}
Respuestas:
Se puede lograr con una simple línea.
Teniendo esta matriz:
Tu puedes hacer:
Y el valor de
$arr
será:Espero que ayude a escribir un código hermoso.
fuente
array_diff
función es no destructivo, que devuelve una nueva matriz.$referenced = array_diff($referenced, $items_to_remove);
Estoy agregando una segunda respuesta. Escribí un script de evaluación comparativa rápida para probar varios métodos aquí.
El tercer método,
array_keys()
con el parámetro de búsqueda opcional especificado, parece ser, con mucho, el mejor método. Ejemplo de salida:A juzgar por esto, la solución que usaría entonces sería:
fuente
Qué tal si:
o para múltiples valores:
Esto también evitaría la pérdida de claves, que es un efecto secundario de
array_flip()
.fuente
para eliminar
$rm_val
de$arr
fuente
Sería la solución más poderosa
array_filter
, que le permite definir su propia función de filtrado.Pero algunos podrían decir que es un poco exagerado, en su situación ...
Un simple
foreach
ciclo para recorrer la matriz y eliminar el elemento que no desea debería ser suficiente.Algo como esto, en su caso, probablemente debería hacer el truco:
fuente
Prueba array_search ()
fuente
array_keys()
parece funcionar mejor quearray_search()
para esta tarea.Sus soluciones solo funcionan si tiene valores únicos en su matriz
Ver:
Una mejor manera sería desarmar con array_search , en un bucle si fuera necesario.
fuente
sin voltear:
fuente
fuente
Puede usar la función array_splice para esta operación Ref: array_splice
fuente