PHP: cómo eliminar todos los elementos de la matriz después de un índice

¿Es posible eliminar todos los elementos de la matriz después de un índice?

$myArrayInit = array(1=>red, 30=>orange, 25=>velvet, 45=>pink); 

ahora algo de “magia”

 $myArray = delIndex(30, $myArrayInit); 

Llegar

 $myArray = array(1=>red, 30=>orange); 

debido a que las claves en $myArray no son sucesivas, no veo la posibilidad de array_slice()

Please note : ¡las llaves deben conservarse! + ¡Solo sé la tecla de compensación!

Sin hacer uso de bucles.

 'red', 30=>'orange', 25=>'velvet', 45=>'pink'); //<-- Your actual array $offsetKey=25; //<--- The offset you need to grab //Lets do the code.... $n=array_keys($myArrayInit); //<---- Grab all the keys of your actual array and put in another array $count=array_search($offsetKey,$n); //<--- Returns the position of the offset from this array using search $new_arr=array_slice($myArrayInit,0,$count+1,true);//<--- Slice it with the 0 index as start and position+1 as the length parameter. print_r($new_arr); 

OUTPUT :

 Array ( [1] => red [30] => orange [25] => velvet ) 

Tratar

 $arr = array(1=>red, 30=>orange, 25=>velvet, 45=>pink); $pos = array_search('30', array_keys($arr)); $arr= array_slice($arr,0,$pos+1,true); echo "
"; print_r($arr);

Ver demostración

Me gustaría iterar sobre la matriz hasta llegar a la clave que desea truncar la matriz a partir de entonces, y agregar esos elementos a una nueva matriz temporal, luego establecer la matriz existente a nulo, luego asignar la matriz temporal a la matriz existente.

Esto usa un valor de indicador para determinar tu límite:

 $myArrayInit = array(1=>'red', 30=>'orange', 25=>'velvet', 45=>'pink'); $new_array = delIndex(30,$myArrayInit); function delIndex($limit,$array){ $limit_reached=false; foreach($array as $ind=>$val){ if($limit_reached==true){ unset($array[$ind]); } if($ind==$limit){ $limit_reached=true; } } return $array; } print_r($new_array); 

Prueba esto:

 function delIndex($afterIndex, $array){ $flag = false; foreach($array as $key=>$val){ if($flag == true) unset($array[$key]); if($key == $afterIndex) $flag = true; } return $array; } 

Este código no está probado