|
|
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
имеем текст вытянутый из БД примерно такого вида Код: html 1. 2. 3. 4. 5. как мне из этого текста средствами php можно вытянуть нужные мне числа. Поясняю: все, что написано после слова "calculator:" мне необходимо превратить в переменные для моего скрипта т.е. в скрипте заложены константы "$d1=500; $d1_5=1500; $d1_7=1700;" мне нужно превратить мою текстовую строку "d1=2,d1_5=4,d1_7=9" в конечное число 22300 (2*500+4*1500+9*1700 = 22300) я пытался придумать код вот такого вида, но получается что-то отвратительное Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ГУРУ! Помогите ради Христа! Очень надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 18:13 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Уже мозг вскипел, а очень надо! Неужели никто не знает как мне можно помочь? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 19:21 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Проблема то в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 19:25 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
vkle, Как обычно хотят готовое решение, что на автора написали и протестировали. Pelsh, Регулярные выражения Вам в помощь. Или заменами до прямого выполняемого кода практически то что сами и написали. А вообще на лицо не правильная организация данных. Лучше бы calculator:d1=2,d1_5=4,d1_7=9 и вынести в отдельные поля и хранить массивом, тогда можно было-бы и описание из не го генерить а не хранить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 21:54 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
SergSW, Посоветуйте как лучше организовать хранение данных? Пока админка еще не дописана - придумаю как изменить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 22:49 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Pelsh, В простейшем случае поле в БД отдельное заводите. В поле можно пихать серилизованный массив, который изначально имеет вид array('диаметр'=>'количество'). Для Вашего примера массив выглядел бы так: Код: php 1. 2. 3. 4. 5. Цены в виде отдельных переменных тоже хранить нет смысла, удобнее пихнуть в массив с аналогичными ключами. Однако, это тот же уровень. Можно пойти дальше, сделать гораздо более гибкое решение. Таблицы: "товары", "компоненты в товарах" (содержит id товара, id компонента и кол-во единиц данного компонента), "компоненты и их цены". При таком раскладе вычисление суммарной цены можно целиком (или почти целиком) сбагрить в SQL-запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 23:09 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
...Да и описание в части состава изделия тоже генерить можно, а не вбивать ручками :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 23:12 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Pelsh, Если с этими данными типа "d1=2,d1_5=4,d1_7=9" не планируете работать на уровне sql, то можно просто массивом чтоб не плодить сущностей (работать через сериализацию, в случае с ORM она это на себя возьмёт). Тогда в php работаете просто как с массивом, например. Код: php 1. 2. 3. 4. 5. 6. 7. из данных такой структуры и текстовую строку легко собрать Код: php 1. если важна форма огранки и .т.д. то это тоже можно в $data засунуть и оттуда брать. При этом варианте не надо хранить описание. Если надо из sql работать то через вторую таблицу. В этом случае и описание можно прямо в sql делать и стоимость, хотя запросы громоздкими будут. Тут уж с чем легче работать. Но хранить в тексте и потом его парсить, это ИМХО скажем так не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 23:15 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста еще немного. Сейчас штудировал литературу в разделе «работа с массивами» однако т.к. ранее с ними не работал прошу немного помочь. Имеем код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 04:35 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Pelsh, делайте цены ассоциативным массивом и циклом по нему примерно так Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 07:04 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Pelsh, Как-то сомневаюсь, что цена камней только от диаметра зависит Код: php 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 10:44 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
SergSWКак-то сомневаюсь, что цена камней только от диаметра зависит+1. Сомневаюсь, что и такое решение с делением по названию камушка будет нормально работать в реальности. Потом окажется, что цена зависит от типа огранки и количества граней, от цвета, от "уникальности", производителя, места добычи, конкретной поставки или еще чего... И в итоге массив разрастется до неприличных размеров и будет иметь огромное количество элементов, бОльшей частью совершенно ненужных для вычисления стоимости конкретного изделия. Потому, как писал выше, данные о камнях считаю правильным поместить в таблицу-справочник. Но при таком раскладе делать вычисления, используя промежуточный массив и цикл... несколько теряет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 12:14 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
vkle, vkleСомневаюсь, что и такое решение с делением по названию камушка будет нормально работать в реальности. оно и понятно, это для примера привел. По хорошему надо прайс с параметрами камушков в базу вносить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 12:27 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
vkle, Для себя использую простой критерий, если отбор идёт по 1-2 параметрам - массивы, если больше - таблицы. В отдельных случаях может быть массив по составному ключу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2012, 12:43 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
эта конструкция не работает. всегда выдает сумму 8300 не зависимо от того, какие диаметры указать SergSWPelsh, Как-то сомневаюсь, что цена камней только от диаметра зависит Код: php 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:05 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
vkleSergSWКак-то сомневаюсь, что цена камней только от диаметра зависит+1. Сомневаюсь, что и такое решение с делением по названию камушка будет нормально работать в реальности. Потом окажется, что цена зависит от типа огранки и количества граней, от цвета, от "уникальности", производителя, места добычи, конкретной поставки или еще чего... И в итоге массив разрастется до неприличных размеров и будет иметь огромное количество элементов, бОльшей частью совершенно ненужных для вычисления стоимости конкретного изделия. Потому, как писал выше, данные о камнях считаю правильным поместить в таблицу-справочник. Но при таком раскладе делать вычисления, используя промежуточный массив и цикл... несколько теряет смысл. Да действительно цена зависит от насыщенности цвета, места добычи, конкретной поставки, курса доллара, НО все это становится мелочью когда понимаешь какая наценка на товар ))) по этому все цены приближенные и зависят по большей части именно от диаметра камня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:08 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
Pelsh, Код написан на коленке и призван показать идею. А не дать готовое решение. К тому же не понятно какие диаметры и куда меняете. Да и так очевидно что для d=1.2 цена не будет найдена т.к. её нет в $values. Сама по себе конструкция рабочая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:11 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
ILL HEAD, Ваша конструкция отлично считает!! Спасибо!! Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:12 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
SergSWPelsh, Код написан на коленке и призван показать идею. А не дать готовое решение. К тому же не понятно какие диаметры и куда меняете. Да и так очевидно что для d=1.2 цена не будет найдена т.к. её нет в $values. Сама по себе конструкция рабочая. ошибку с d=1.2 я увидел сразу и исправил, однако все равно конструкция не рабочая получилась по какой-то причине! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:14 |
|
||
|
Помогите с функцией замены
|
|||
|---|---|---|---|
|
#18+
SergSW, был не прав была принц ошибка, правильней так Код: php 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. Что поделать PHP "очень хорош" не может нормально с float ключами работать. Забыл об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2012, 01:15 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38024737&tid=1464474]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 554ms |

| 0 / 0 |
