Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Помогите решить задачку Есть текстовый файл: first.name = 'f_test' first.password = 'f_test_password ' second.name= 's_test_name' second.password.test = 's_test_test' Мне нужно чтобы на выходе был массив $test['first']['name'] => "f_test"; $test['first']['password'] => "f_test_password"; $test['second']['name'] => "s_test_name"; $test['second']['password']['test'] => "s_test_test"; Сделал так, но это всего два уровня Код: 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. 40. 41. 42. 43. 44. ни как не могу понять, как правильно сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 17:00 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
sscanf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 18:12 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Lanuser, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 18:36 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
также можно через функции по работе с масивами, но суть серьёзно не измениться, ибо всеравно в глубину ключи надо будет создавать своей строчкой кода. разница лишь в том как зациклиться и как передавать ссылку на уровень ниже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 18:40 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 18:59 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrow Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. это ты любитель говорить - запомните это дети и НИКОГОДА больше так не делайте. ??? :):):) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 19:33 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
аргументы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 19:38 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrow здорово помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 20:58 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
LanuserЕсть текстовый файл: first.name = 'f_test' first.password = 'f_test_password ' second.name= 's_test_name' second.password.test = 's_test_test' Мне нужно чтобы на выходе был массив $test['first']['name'] => "f_test"; $test['first']['password'] => "f_test_password"; $test['second']['name'] => "s_test_name"; $test['second']['password']['test'] => "s_test_test"; Думаю, тут всё просто, если без проверок. Иходный файл: Код: php 1. 2. 3. 4. 5. Код: Код: php 1. 2. 3. 4. 5. 6. 7. Результат: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 21:58 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowаргументы будут? Стоило бы написать "ты сделал мой день", да вот автор взял код на вооружение, потому аргументы всё же напишу :) 1. Безопасность: eval - это зло... его использовать противопоказано :) Где нить экранирование данных пропустишь - и дырка шириной с ворота (об этом даже начинающие программисты знают). 2. косячность: ну тут всё одной строкой можно описать: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 10:14 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Програмёр 1. Безопасность: eval - это зло... его использовать противопоказано :) Где нить экранирование данных пропустишь - и дырка шириной с ворота (об этом даже начинающие программисты знают). 2. косячность: ну тут всё одной строкой можно описать: Код: php 1. а вот теперь ты сделал мой день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 11:22 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowПрограмёр1. Безопасность: eval - это зло... его использовать противопоказано :) Где нить экранирование данных пропустишь - и дырка шириной с ворота (об этом даже начинающие программисты знают). 2. косячность: ну тут всё одной строкой можно описать: Код: php 1. а вот теперь ты сделал мой день. ты сделал моё утро! Модератор: ScareCrow, Програмёр , настоятельно прошу прекратить употреблять фразы вроде "ты сделал мое <время суток>" без каких-либо комментариев по существу вопроса. Вы находитесь на профессиональном форуме, а не в личном блоге, где можете делиться с аудиторией радостями и восторгами от увиденного кода. Обещаю на следующем подобном посте нажать кнопку "Забанить", а если это не поможет - поставлю еще галку "Постоянный бан". ScareCrow, Вам я уже делал ранее подобные замечания, но Вы их почему-то игнорируете. Считайте это последним китайским предупреждением. -- vkle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 11:59 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрScareCrowпропущено... а вот теперь ты сделал мой день. ты сделал моё утро! OK, без eval мб вы сможете мне помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 12:40 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Програмёр1. Безопасность: eval - это зло... его использовать противопоказано :) Где нить экранирование данных пропустишь - и дырка шириной с ворота (об этом даже начинающие программисты знают).Считаю, что таким набором аргументов "злом" eval() может стать только для начинающих программистов. Опытный же программист в любом случае сделает необходимые проверки. Разумеется, в каких-то случаях проверки входных данных могут быть достаточно простыми, а в каких-то могут потребовать определенных усилий. При Ваших же аргументах "злом" можно считать использование массивов $_POST, $_GET, да и вообще, любое получение данных извне - ведь везде можно "забыть" сделать проверку/обработку данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 13:02 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
LanuserПрограмёрпропущено... ты сделал моё утро! OK, без eval мб вы сможете мне помочь? не сможет. нельзя в php по очереди ключи без значений в массив добавлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 13:47 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrow, OK, а если есть такой массив: 'firs.name' => "f_test"; 'first.password' => "f_test_password"; Как разобрать ключ на ключи с учетом разделителя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 13:53 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
LanuserПрограмёрпропущено... ты сделал моё утро! OK, без eval мб вы сможете мне помочь? с eval делать можно (хотя как я и говорил, не желательно). Основным был последний аргумент, что при изменении входных данных получаем глюк (если в значении случайно встретятся знаки "." или "="). предлагаю взять вариант vkle, только во избежания косяка с "=" (у него он тоже будет, хотя с точкой всё ок), у explode добавить третий аргумент 2 (ну то есть установить лимит) :) без eval сделать можно, просто немного сложнее. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вот ) Если нигде не ошибся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:27 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
это правда вы утром говорили об опасности eval? вам не кажется что вот такие хаки гораздо опасней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:31 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторarray(2) { ["first"]=> array(2) { ["name"]=> string(8) "'f_test'" ["password"]=> string(18) "'f_test_password '" } ["second"]=> array(2) { ["name"]=> string(13) "'s_test_name'" ["password"]=> array(1) { ["test"]=> &string(13) "'s_test_test'" } } } кстати работает неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:35 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
и во избежание косяков при неоднозначном вводе (типа "password = '10'\npassword.test='12'") стоит наверное добавить после: Код: php 1. ещё строку Код: php 1. в таком случае получим это значение "по-умолчанию" в нулевом элементе. Ну то есть код выше вернёт массив array("password"=>array(0=>"'10'", "test"=>"'12'")) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:35 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:35 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowэто правда вы утром говорили об опасности eval? вам не кажется что вот такие хаки гораздо опасней? Работа по указателю (или в php это вроде правильно называется по ссылке, так как я могу только сослаться на переменную, а не обратиться по указанному адресу) - не хак :) Только тут никто никуда влезть не сможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:38 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrow Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. а как должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:39 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторМне нужно чтобы на выходе был массив $test['first']['name'] => "f_test"; $test['first']['password'] => "f_test_password"; $test['second']['name'] => "s_test_name"; $test['second']['password']['test'] => "s_test_test"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:39 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
а, не, правильно. мой косяк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 14:46 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1106675&msg=16343177][PHP] Как преобразовать string в array? так долго обсуждали, а решение в самом верху :) только проверка там лишняя на существование ключа...это артифакт, я сначала код по другому сделал, потом упростил и не всё выкинул тестовое. там достаточно $link = &$link[$index]; ну и для строгости проверки добавить, аля защита от дурака... точки могут быть лишнии, равно несколько... вообщем тут уже творчество и нащёт фразы ScerFlow - что нельзя добавлять ключи без значений.. ну вот собственно пример когда можно ЗЫ хитрость, что при обьявлении ссылки на переменую, которой нету, она создаёться автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 16:16 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторона создаёться автоматически. и инициализируется чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 16:29 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторона создаёться автоматически. и инициализируется чем? Прикольно... я не знал о таком поведении. Реально, при обращении к несуществующему ключу массива, на который была сделана ссылка, ошибка не выскакивает, а всё как надо отрабатывает. То есть php считает такую переменную уже объявленной... Инициализирует он её разумеется значением NULL. то есть: Код: php 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 17:00 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторТо есть php считает такую переменную уже объявленной http://nikic.github.io/2014/01/10/The-case-against-the-ifsetor-function.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 17:15 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрScareCrowпропущено... и инициализируется чем? Прикольно... я не знал о таком поведении. Реально, при обращении к несуществующему ключу массива, на который была сделана ссылка, ошибка не выскакивает, а всё как надо отрабатывает. То есть php считает такую переменную уже объявленной... Инициализирует он её разумеется значением NULL. то есть: Код: php 1. 2. 3. я больше скажу... вчера случайно набрёл, и потом убедился... аля шаблон Масив-Одиночка. $a[0]=10; //$link = &$a[0]; $b=$a; $b[0]++; //$link = &$value; $c=$b; $c[0]++; и мы понимаем что в масивах должны быть числа 10 11 12 ибо это три разных масива. но если разкоментировать первую строку, то уже не будет создавать копия масива, всегда будет присваинвание ссылки на масив. и даже если разкоментировать вторую строку - уничтожить ссылку на елемент масива, всёравно скопировать масив не удасться...он будет по ссылке присваиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 19:54 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
там еще веселее. угадай ответ. Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 22:24 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowтам еще веселее. угадай ответ. Код: php 1. 2. 3. 4. 5. угадал :) $arr = array(2,3,4) - проверено или имелось ввиду что-то другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 16:30 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453Програмёрпропущено... Прикольно... я не знал о таком поведении. Реально, при обращении к несуществующему ключу массива, на который была сделана ссылка, ошибка не выскакивает, а всё как надо отрабатывает. То есть php считает такую переменную уже объявленной... Инициализирует он её разумеется значением NULL. то есть: Код: php 1. 2. 3. я больше скажу... вчера случайно набрёл, и потом убедился... аля шаблон Масив-Одиночка. $a[0]=10; //$link = &$a[0]; $b=$a; $b[0]++; //$link = &$value; $c=$b; $c[0]++; и мы понимаем что в масивах должны быть числа 10 11 12 ибо это три разных масива. но если разкоментировать первую строку, то уже не будет создавать копия масива, всегда будет присваинвание ссылки на масив. и даже если разкоментировать вторую строку - уничтожить ссылку на елемент масива, всёравно скопировать масив не удасться...он будет по ссылке присваиваться. Скажу больше )) Похоже это косяк разрабов (не знаю как и почему так вышло, но так работать не должно... при создании ссылки на переменную мы не должны затрагивать саму переменную). И сам массив передаётся по значению (копируется), а просто элемент массива почему становится не значением, а ссылкой на значение, от чего наблюдается описанный выше эффект (то есть если теперь присвоить $c[1], то $a[1] не появится). Очень интересно послушать, знает ли кто в чём природа этого косяка? Может быть есть ещё что-то с этим связанное, чего стоит опасаться? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 17:16 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторОчень интересно послушать, знает ли кто в чём природа этого косяка? Может быть есть ещё что-то с этим связанное, чего стоит опасаться? :) http://nikic.github.io/2014/01/10/The-case-against-the-ifsetor-function.html This seems to come as a surprise to most people, because the code definitely looks like it accesses an undefined index and ought to throw a notice. Here the magic of references comes in: If you perform a by-reference argument pass (or assign) PHP will be using a different fetch type for retrieving the array offsets. In this particular case it would issue a number of “dim w” (dimension write) fetches. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 17:38 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторили имелось ввиду что-то другое? Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 17:42 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторОчень интересно послушать, знает ли кто в чём природа этого косяка? Может быть есть ещё что-то с этим связанное, чего стоит опасаться? :) http://nikic.github.io/2014/01/10/The-case-against-the-ifsetor-function.html This seems to come as a surprise to most people, because the code definitely looks like it accesses an undefined index and ought to throw a notice. Here the magic of references comes in: If you perform a by-reference argument pass (or assign) PHP will be using a different fetch type for retrieving the array offsets. In this particular case it would issue a number of “dim w” (dimension write) fetches. Сложности с переводом :) Что там написано то? "Если вы выполняете установку (назначение) аргумента по ссылке, PHP будет использовать другой тип выборки при получении смещений массива. В данном случае это будет запрос номера 'dim w' (размерность записи) выборки" Последнее предложение остаётся для меня загадкой (возможно что не так перевёл). Первое - не касающиеся темы (так как запись по ссылке мы не производим). Вопрос пока остаётся для меня непонятным. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 18:13 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторили имелось ввиду что-то другое? Код: php 1. Именно это и ожидалось. :) в чём тут хитрость? P.S. Возможно ты неверно понял то, о чём писал alex564657498765453. Там фишка в том, что мы просто создаём ссылку на элемент массива и он сам почему-то становится ссылкой (то есть не явно преобразовывается в ссылку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 18:16 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
авторСложности с переводом :) Что там написано то? ну почитай дальше по ссылке. авторA write-fetch obviously doesn’t throw a notice if the assigned index doesn’t exist yet (otherwise you wouldn’t be able to create indexes without throwing notices). What’s interesting is that the whole thing also work recursively, so none of the indices in the chain have to exist: $array[0][1][2] = 'foobar'; The above example will not throw a notice if $array[0][1] doesn’t exist, it won’t throw a notice if $array[0] doesn’t exist and it even won’t throw a notice if the $array variable itself doesn’t exist. PHP implements write-fetches by creating the respective offset and initializing it to null (if it doesn’t yet exist). This is compatible with nested index assigns because PHP allows silent casts from null (and other falsy values) to arrays. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 18:22 |
|
||
|
[PHP] Как преобразовать string в array?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторСложности с переводом :) Что там написано то? ну почитай дальше по ссылке. авторA write-fetch obviously doesn’t throw a notice if the assigned index doesn’t exist yet (otherwise you wouldn’t be able to create indexes without throwing notices). What’s interesting is that the whole thing also work recursively, so none of the indices in the chain have to exist: $array[0][1][2] = 'foobar'; The above example will not throw a notice if $array[0][1] doesn’t exist, it won’t throw a notice if $array[0] doesn’t exist and it even won’t throw a notice if the $array variable itself doesn’t exist. PHP implements write-fetches by creating the respective offset and initializing it to null (if it doesn’t yet exist). This is compatible with nested index assigns because PHP allows silent casts from null (and other falsy values) to arrays. Пока всёровно не понимаю отношения этого к описанному косяку (разве только ты это к чему то другому пишешь)... Ну инициализирует пхп несуществующие элементы массива как null для последующего type-cast'а в массив и продолжения записи цепочки. Как это влияет на то, что при создании ссылки на элемент массива он сам становится ссылкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 22:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=23&tid=1462578]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 424ms |

| 0 / 0 |
