Изменение значения в элемента в массиве

135
20 января 2021, 02:00

Подскажите пожалуйста, есть код, в этом коде, происходит разложение текста в массив, после чего идет проверка текста с изменением его согласно параметрам. столкнулся с проблемой что при работе с функцией current(array) - не получается присвоить новое значение. В последнем блоке, подскажите что я делаю не так и как это работает?

  if(end($array) == 'UOII'){
      if(prev($array) == 'UOOG'){
          current($array)='UOOOG'; //не происходит присваивание и выдает ошибку
      }else{echo '---';
      }
  }

  print_r($array);
Answer 1

Функция current() просто возвращает значение элемента массива, на который указывает его внутренний указатель.

В отличии от функций end() и prev() которые сначала устанавливают указатель в массиве на нужный элемент, а затем возвращают значение.

Это тоже самое что пытаться одной строке присвоить другую строку, будет ошибка:

'string' = 'UOOOG';

В вашем случае можно вообще обойтись без указателей:

$count = count($array);
if ($array[$count - 1] == 'UOII') {
  if ($array[$count - 2] == 'UOOG') {
    $array[$count - 2] = 'UOOOG';
  } else {
...

Либо если вы хотите использовать указатели, задействуйте функцию key() которая возвращает ключ массива на котором сейчас установлен указатель:

...
if(prev($array) == 'UOOG') {
    $array[key($array)] = 'UOOOG';
} else {
...
READ ALSO
Не могу изменить несколько записей из БД

Не могу изменить несколько записей из БД

Есть таблица Фильмов,Актеров и таблица соединяющая ид фильма и ид актераЕсть разметка

138
Почему заказ придет без товара?

Почему заказ придет без товара?

всем доброго времени суток

144
Ошибка отправки уведомления Bitmessage

Ошибка отправки уведомления Bitmessage

помогите пожалуйста с решением вопроса

135
Ограничить число итераций foreach

Ограничить число итераций foreach

Подскажите, как ограничить количество строк таблицы, выводимых циклом foreach из БД sqlite на страницу? Нужно выводить не более 500 строка в БД их 10 тысяч

141