¿Podría decirme cómo puede eliminar un elemento de la matriz? ¿Crees que es bueno?¿Cuál es la mejor manera de eliminar elementos de matriz en PHP?
Respuesta
Eso depende:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
unset($a1['b']);
// array('a' => 1, 'c' => 3)
$a2 = array(1, 2, 3);
unset($a2[1]);
// array(0 => 1, 2 => 3)
// note the missing index 1
// solution 1 for numeric arrays
$a3 = array(1, 2, 3);
array_splice($a3, 1, 1);
// array(0 => 1, 1 => 3)
// index is now continous
// solution 2 for numeric arrays
$a4 = array(1, 2, 3);
unset($a4[1]);
$a4 = array_values($a4);
// array(0 => 1, 1 => 3)
// index is now continous
general unset()
es seguro para tablas hash (arrays indexados cadena), pero si usted tiene que depender de los índices numéricos continuos que tendrá que utilizar array_splice()
o una combinación de unset()
y array_values()
.
La forma más común:
De acuerdo con la manual
unset($arr[5]); // This removes the element from the array
La forma filtrada:
También existe la función array_filter() para cuidar de las matrices de filtrado
$numeric_data = array_filter($data, "is_numeric");
Para obtener un índice secuencial puede utilizar
$numeric_data = array_values($numeric_data);
Referencias
PHP – Delete selected items from an array
Peter, gracias. – lovespring
Depende. Si desea eliminar un elemento sin causar deficiencias en los índices, es necesario utilizar array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
Salida:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
Usando desarmar puede trabajar, pero esto resulta en un índice no continua. Esto a veces puede ser un problema cuando iterar sobre la matriz mediante recuento ($ a) - 1 como una medida de la cota superior:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
Salida:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Como se ve, el recuento es ahora 3 pero el índice del último elemento también es 3.
Mi recomendación es por lo tanto usar array_splice para matrices con índices numéricos, y usar unset solo para matrices (en realidad diccionarios) con índices no numéricos.
alternativamente puede llamar 'unset ($ a [2]); $ a = array_values ($ a); ' – nickf
- 1. ¿Cuál es la mejor manera de eliminar duplicados en una matriz en Java?
- 2. Cuál es la mejor manera de paginar resultados en php
- 3. La mejor manera de eliminar elementos de una colección
- 4. ¿cuál es la mejor manera de verificar una matriz vacía?
- 5. ¿Cuál es la mejor manera de obtener los últimos N elementos de una matriz Perl?
- 6. ¿Cuál es la mejor manera de eliminar el primer elemento de una matriz?
- 7. ¿La mejor manera de eliminar todos los elementos de una matriz de ActionScript?
- 8. Hibernar: la mejor manera de eliminar elementos en una colección
- 9. ¿Cuál es la mejor manera de dibujar en la consola?
- 10. ¿Cuál es la mejor manera de comparar cadenas hash? (PHP)
- 11. Mejor manera de desarmar múltiples elementos de la matriz
- 12. ¿Cuál es la mejor manera de barajar un NSMutableArray?
- 13. ¿Cuál es la forma "correcta" de eliminar elementos de matriz en Perl?
- 14. ¿Cuál es la mejor manera de crear una matriz de solo lectura en C#?
- 15. ¿Cuál es la mejor manera de crear una matriz de crecimiento dinámico en Scala?
- 16. ¿Cuál es la forma más eficiente/elegante de eliminar elementos de una matriz en MATLAB?
- 17. ¿Cuál es la mejor manera de contar la longitud absoluta de la matriz en JavaScript?
- 18. ¿Cuál es la mejor manera de hacer bucles en JavaScript
- 19. forma eficaz de eliminar varios elementos de matriz PHP
- 20. ¿Cuál es la mejor manera de almacenar variables de clase en PHP?
- 21. ¿Cuál es la mejor manera de afirmar la igualdad numpy.array?
- 22. ¿Cuál es la mejor manera de consultar una matriz en javascript para obtener solo los elementos de ella que quiero?
- 23. ¿Cuál es la mejor manera de crear una matriz dispersa en C++?
- 24. ¿cuál es la mejor manera de representar latice hexagonal
- 25. ¿Cuál es la mejor manera de reorganizar aleatoriamente una lista de elementos en C#?
- 26. models.py hacerse grande, ¿cuál es la mejor manera de romperlo?
- 27. ¿Cuál es la mejor manera de dividir una cadena en una matriz de caracteres Unicode en PHP?
- 28. ¿Cuál es la mejor manera de eliminar acentos en una cadena unicode de Python?
- 29. La mejor manera de ordenar una matriz
- 30. ¿Cuál es la mejor manera de crear una matriz secundaria a partir de una matriz existente en C++?
¿Por qué usaría unset combinado con array_values en lugar de array_splice? – John
@John: Un escenario en el que puedo pensar es cuando quieres eliminar varios elementos de una matriz. Con la ruta 'unset()', puede eliminar los valores sin tener que pensar en cambiar las claves; si ha terminado, ejecute la matriz a través de 'array_values ()' para normalizar la indexación. Eso es más limpio y más rápido que usar 'array_splice()' varias veces. –