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

#php #foreach

#php #foreach

Вопрос:

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

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

 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:

Обновлено

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

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

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

Вы хотите:

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

Комментарии:

1. Я хочу, чтобы $key в цикле foreach возвращался к предыдущему значению