#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 возвращался к предыдущему значению