|
|
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Можно ли принудительно инициализировать значение статической переменной перед каждым последующим вызовом функции, в к-рой она (переменная) объявлена? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Выводит: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. А хотелось бы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Как можно сделать, чтобы значение переменной $counter всегда инициализировалось с нуля, если функция вызывается из вне? P.S. просьба не отсылать почитать мануал, уже читал... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 14:31 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Есть пример в мануале, в к-ром грится, что если передавать, значение статичной переменной по ссылке, то она не будет сохранятся при последующем вызове функции. Но че-то у меня такой фокус не проходит, выдается ошибка. http://www.php.net/manual/ru/language.variables.scope.php Аналогично ведет себя и выражение static. Ссылки не хранятся статично: ... Этот пример демонстрирует, что при присвоении ссылки статической переменной она не запоминается, когда вы вызываете функцию &get_instance_ref() во второй раз. Но как тогда сделать, чтобы в рекурсивном вызове значение сохранялось, а во внешнем нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 14:54 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Мда трудно представить зачем эта функция нужна... Ну да ладно. А чего ты так прицепился к этой статической переменной? Она на то и статическая что бы сохранять свое значение между вызовами. Что тебе мешает сделать так: function foo($str, $pos=0) { global $array; if ($pos>strlen($str)) { return; } $array[] = substr($str, $pos++); foo($array[count($array)-1], $pos+1); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 14:59 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
ComiljouМда трудно представить зачем эта функция нужна... Ну да ладно. А чего ты так прицепился к этой статической переменной? Она на то и статическая что бы сохранять свое значение между вызовами. Что тебе мешает сделать так: function foo($str, $pos=0) { global $array; if ($pos>strlen($str)) { return; } $array[] = substr($str, $pos++); foo($array[count($array)-1], $pos+1); } Да мне эта функция нах.. не нужна. Проблема-то не в этой функции. Просто надо как-то придумать, чтобы инициализация переменной вне функции всегда срабатывала, а внутри функции (когда делается рекурсия), крутился счетчик. Такой вариант не подходит, т.к. надо чтобы при выходе из рекурсии функция возвращалась к предыдущему своему вызову. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:18 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
BerkutМожно ли принудительно инициализировать значение статической переменной перед каждым последующим вызовом функции, в к-рой она (переменная) объявлена?Статические переменные не предназначены для этого. Вам они не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:19 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
BerkutПросто надо как-то придумать, чтобы инициализация переменной вне функции всегда срабатывала, а внутри функции (когда делается рекурсия), крутился счетчик. Такой вариант не подходит, т.к. надо чтобы при выходе из рекурсии функция возвращалась к предыдущему своему вызову.Так он и крутится. PS: гадание на кофейной гуще рекомендую делать на сайтах, посвящённых этому надувательству, а не на форумах по программированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:21 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
* BerkutМожно ли принудительно инициализировать значение статической переменной перед каждым последующим вызовом функции, в к-рой она (переменная) объявлена?Статические переменные не предназначены для этого. Вам они не нужны. Хорошо... ваш вариант (если на самом деле нужно :) ): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:28 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Че-то я нифига не понял. Может тебе просто что-то типа этого надо $array = array(); function foo($str, $pos=0) { global $array,$count; .... print "<br>"; $count = 0; foo("hello world"); foreach($array as $key=>$substr) { print "$key => $substr<br>"; } $array = array(); $count = 0; print "<br>"; foo("this is test message"); foreach($array as $key=>$substr) { print "$key => $substr <br>"; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:33 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
BerkutХорошо... ваш вариант (если на самом деле нужно :) ):По моему, я уже дал понять, что я не гадаю на кофейной гуще. Выше вы привели какой-то код, после чего сделали заявление > Да мне эта функция нах.. не нужна. Извините, но пока не будет поставлена реальная задача - говорить о путях её решения не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:35 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Я не могу понять, что функция должна делать?... Может я с похмелья в Пн торможу... но для тех, кто вылез из танка, ТЗ для функции... Когда задаю себе вопрос: "Зачем здесь статическая переменная?" мой больной мозг вообще начинает кипеть...;) ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:40 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Спешиал фо * Тестовые данные: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Выход: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 16:19 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
Во-первых, код (такой большой) никто не спрашивал, во-вторых, counter вам там не нужен вообще. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 16:31 |
|
||
|
(PHP) Использование статических переменных.
|
|||
|---|---|---|---|
|
#18+
*Во-первых, код (такой большой) никто не спрашивал, во-вторых, counter вам там не нужен вообще. Код: plaintext Пасибо, *. Навел на мысли... если будут ишо идеи (как правильнее), то очень буду рад. Согласен с тем, что код можно сделать еще лучше, но ... что пока есть, тем и пользуюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 16:36 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=32971524&tid=1478583]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 471ms |

| 0 / 0 |
