Creo que no entiendo correctamente cómo se supone que array_splice funciona. Según entiendo, el primer param es tu matriz inicial, el segundo param es el elemento para comenzar, y el tercer parámetro es la longitud o la cantidad de elementos para eliminar/reemplazar.¿Cómo puedo eliminar un solo miembro de la matriz usando array_splice en php?
lo tanto, he esta matriz (salida de print_r):
Array (
[0] => Array ([TypeFlag] => S [qty] => 1 [denom] => 25 [certMessage] => [totalPrice] => 25)
[1] => Array ([TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50)
[2] => Array ([TypeFlag] => V [qty] => 2 [denom] => 25 [certMessage] => test [totalPrice] => 50))
Quiero eliminar por completo el segundo elemento (la matriz con índice de 1; TypeFlag = C, etc.) que no quiero reemplazarlo con cualquier cosa; solo para devolver la matriz con los dos elementos restantes. He intentado esto (donde la compra es el nombre de la matriz):
$cart = array_splice($cart, 1,1);
Pero lo que termino con esto es cuando se hace un print_r:
Array ([0] => Array ([TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50))
por lo que parece ser la eliminación de 0 y 2 y dejando 1 como el resto. ¿Qué estoy haciendo mal?
Así que si estoy haciendo esto dentro de una función y necesita devolver la matriz menos el valor elegido, ¿tengo que asignar primero $ carro a un valor temporal (es decir, $ cartTemp = $ cart), luego haga el empalme, luego reasigne la matriz a $ carro? ¿O simplemente hago array_splice ($ carro, 1, 1), luego devuelvo $ carro? NUNCA MENTE - lo intenté y funciona si solo hago array_splice y luego devuelvo $ cart. Gracias. – EmmyS
No. No es necesario asignarlo a una temperatura. Simplemente llame a la función, pasándola a la matriz y la función cambiará la matriz. – codaddict
unset necesita matrices indexadas, si la matriz no tiene índices unset lo agrega por sí mismo y si quiere su colección sin índices, lo estropea todo. – CookieMonster