Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> parse_str() и parse_url() неортогональность, не наступайте на эти грабли 
:(
    Опции темы
MyDarkSide
Дата 3.9.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 21.3.2008

Репутация: нет
Всего: -1



у PHP много преимуществ, но есть и недостатки, в частности,  не последовательность в именовании функций, порядке аргументов и их поведении.
Только что потратил 40 минут, на не понятный баг.
Код

$query = 'length_mask=3&show=1&global_grp=&id_topic=1';
$get = parse_str($query);
array_key_exists('show', $get);


Warning:  второй параметр array_key_exists должен быть массив

оказалось все просто
Цитата

parse_url($str) 
This function parses a URL and returns an associative array

НО
Цитата

parse_str($str) 
Разбирает строку str ,которая должна иметь формат строки запроса URL и  присваивает значения переменным в текущем контексте

откуда это так и почему это так трудно объяснить
чтобы получить результат в массив во втором случае, нужно передать переменную вторым параметром 
parse_str($str, $array) 
теперь в $array будет результат распарсивания, переменные в текущем контексте не перезаписываются.

PM ICQ   Вверх
Kallisto
Дата 3.9.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



Да. это недостаток.. много функций где порядок аргументов напутан..

ничего не поделаешь...
PM MAIL   Вверх
brother79
Дата 3.9.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Ну есть же куча мануала, где нормальным языком написанно:

http://us2.php.net/manual/en/function.parse-str.php



void parse_str ( string $str [, array &$arr ] )

Parses str as if it were the query string passed via a URL and sets variables in the current scope. 

ф-и возвращает void, усстанавливает текущие переменные, какие грабли? посмотрел и никаких грабоей.

Добавлено через 53 секунды
Там сразу и примеров использований тьма, на все возможные вар-ты использования.


--------------------
PM MAIL WWW   Вверх
NewDima
Дата 3.9.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



brother79,  такое должно сидеть в голове, а не смотреть постоянно в доки.
Иначе каждую функцию смотреть в доки, так за неделю ничего не напишешь.
А как в данном случае, то очень тяжело запоминать, да и не только тут.
А доки мы читать умеем хорошо

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.