Tengo algunos problemas con una matriz. Tengo una matriz que quiero modificar como a continuación. Quiero eliminar el elemento (elementos) de él por índice y luego volver a indexar la matriz. ¿Es posible?
$foo = array(
'whatever', // [0]
'foo', // [1]
'bar' // [2]
);
$foo2 = array(
'foo', // [0], before [1]
'bar' // [1], before [2]
);
unset($foo[0], $foo[3], $bar[1]);
array_splice
, y no funcionó para los índices 0º y 1º.http://php.net/manual/en/function.array-splice.php
fuente
Es mejor usarlo
array_shift()
. Eso devolverá el primer elemento de la matriz, lo eliminará de la matriz y volverá a indexar la matriz. Todo en un método eficiente.fuente
array_pop()
recuperará y eliminará el último elemento de matriz si lo necesita. Pero no se puede hacer que ninguna función actúe sobre un elemento en el medio de la matriz.fuente
No sé por qué se está rechazando esto, pero si alguien se ha molestado en probarlo, notará que funciona. Al usar sort en una matriz, se reasignan las teclas de la matriz. El único inconveniente es que ordena los valores. Como las claves obviamente se reasignarán, incluso con
array_values
, no importa si los valores se ordenan o no.fuente
Probar con:
fuente
Además de la respuesta de xzyfer
La función
Utilizar
Resultado
fuente
Si lo usa
array_merge
, esto reindexará las claves. El manual dice:http://php.net/manual/en/function.array-merge.php
Aquí es donde encontré la respuesta original.
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset ()
fuente