:: urbansheep (urbansheep) wrote,
:: urbansheep
urbansheep

  • Music:

Ошибки в пхп: кэширование переменных

Эта безумная балалайка, оказывается, на вин32 каким-то (неправильным) образом кэширует переменные в циклах foreach. Так что при последовательности

  1. foreach (array as $a=>$v) {
    1. по условию if переопределяем переменную $alpha
    2. $k = str_replace('blah',$alpha,$k)
      1. echo($alpha)
  2. }

во всех проходах после первого в качестве $alpha при замене используется её значение, полученное при первом прогоне, и дальше никак не заменяется. При этом получается безумие: отладочный вывод альфы показывает, что она таки-новая, но вот в str_replace на вход подаётся её старое значение.

Я запуталась.

Пришлось заменить одну переменную массивом, в котором элементы привязаны к массиву, для которого делается foreach. Это работает, но... В этом нету дао... Не работает.

  • reset(array) перед foreach (хотя в мане и явно указано, что перед foreach не нужно делать reset)

В итоге сделано без *_replace в foreach, а просто прямым присвоением... Что далеко не так изящно...

Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments