array_splice function problem

i have i problem with array_splice function.
i have following code:

<? $input = array (11=>"a", 22=>"b", 33=>"c", 44=>"d");
      array_splice ($input, 1, 1);
      foreach($input as $ind=>$val) {
            echo "$ind=>".$val."<br>";

and it gives following result:

instead of

what i was expecting.
am i doing something wrong? how to delete some array member and keep these indexes?

thanks in advance
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

in this case you could just use:

but array_splice does not preserve keys, and you would have to write your own associative array splice function, or use one from the array_splice php manual ( comments.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Guy Hengel [angelIII / a3]Billing EngineerCommented:
what about this:
<? $input = array (11=>"a", 22=>"b", 33=>"c", 44=>"d");
     foreach($input as $ind=>$val) {
          echo "$ind=>".$val."<br>";
Guy Hengel [angelIII / a3]Billing EngineerCommented:
please ignore my comment, I overlooked something :-(
Joseph MelnickSenior Software Developer - Pharmacy ApplicationsCommented:
Hello kirez,


function new_array_splice($input, $position, $count) {
      $i = 0;
      foreach($input as $key => $value) {
             if($i < $position or $i > $position + $count - 1) {
                     // echo $key ." => ".$value;
                     $output[$key] = $value;
      return $output;

$input = array (11=>"a", 22=>"b", 33=>"c", 44=>"d");

$output = new_array_splice($input, 1, 1);



Just noticed that you accepted  Roönaän 's solution. I wrote a function to do what you wanted so here.

Joseph Melnick (jmelnick)
jmelnick at jphp dot com
kirezAuthor Commented:
thanks. it would be better if i could shared the points.
with Roönaän answer i got what i wanted to achieve, but as im asking about array_splice function your answer is maybe even closer match to the question.

im not sure if admins can allow sharing points now.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.