Ho una matrice che può contenere tasti numerici o associative, o entrambi:Come rimuovere i valori da un array mentre rinumerazione tasti numerici
$x = array('a', 'b', 'c', 'foo' => 'bar', 'd', 'e');
print_r($x);
/*(
[0] => a
[1] => b
[2] => c
[foo] => bar
[3] => d
[4] => e
)*/
voglio essere in grado di rimuovere un elemento dalla matrice, rinumerazione le chiavi non-associativi per tenerli sequenziale:
$x = remove($x, "c");
print_r($x);
/* desired output:
(
[0] => a
[1] => b
[foo] => bar
[2] => d
[3] => e
)*/
Trovare l'elemento diritto di rimuovere non è un problema, sono le chiavi che sono il problema. unset
non rinumera le chiavi e array_splice
funziona su uno offset, anziché su una chiave (ad esempio: prendere $ x dal primo esempio, array_splice($x, 3, 1)
rimuove l'elemento "bar" anziché l'elemento "d").
Questo eliminerà tutti i materiali non - chiavi numeriche. Si prega di leggere di nuovo la domanda originale. – nickf