Изменить ключ в цикле foreach php

Я хочу изменить значение $key, потому что у меня есть array_splice внутри цикла, который изменяет положение моих значений, поэтому — это испортит значение, которое мне нужно в определенном месте.

Я пробовал $key — но это не работает.
например, когда я печатаю $key после того, как я делаю echo $key, это нормально, но когда я Эхо $key сразу после цикла foreach, я получаю значение worng.
Есть идеи?

foreach ($cut as $key => $value) {
            echo "foreach key:".$key."<br>";
            if(in_array($value,$operators))
            {
                if($value == '||')
                {
                    echo "found || in position:".$key."<br>"; 
                    if(($key+1<sizeof($cut)))
                    {
                        $multi = new multi;
                        echo "<br>"."key-1: ";
                        print_r($cut[$key-1]);
                        echo"<br>";
                        echo "<br>"."key+1: ";
                        print_r($cut[$key+1]);
                        echo"<br>";
                        $res = $multi->orex($cut[$key-1],$cut[$key+1],$numString);
                        $cut[$key-1]= $res;
                        array_splice($cut,$key,1);
                        array_splice($cut,$key,1);
                        $key--; //here trying to change the key
                        echo "new string:";
                        print_r($cut);
                        echo "<br>";
                        echo "key:".$key."<br>";
                    }

                }

            }
        }

1 ответ

  1. Усовершенствованный

    Я не думаю, что это хорошая идея, чтобы изменить сам массив внутри цикла foreach. Поэтому, пожалуйста, критикуйте другой массив и заполните в него данные, которые будут вашим результирующим массивом. Этот метод хорошо работает, когда массив данных невелик, другими словами, в большинстве ситуаций.

    Происхождение

    Я не знаю, что ты имеешь в виду. Позвольте мне высказать предположение…

    Вы хотите:

    foreach($arr as $key=>$val){
        $newkey = /* what new key do you want? */
        $arr[$newkey] = $arr[$key];
        unset($arr[$key]);
    }