![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Как объединенить $_GET['variable'] и $_POST['variable'] ? Чтобы не различать в коде программы POST и GET, т.е. чтобы в самом начале программы определить, что и как и больше не заморачиваться с различием.
register_globals - OFF. |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
foreach($_REQUEST as $k=>$v){
if(!@Isset($$k)) { $$k=$v; global $$k; } } -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
extract($_GET);
extract($_POST); И все переменные в глобале. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Зашибись А есть ли какие-то негативные последствия примерения ? |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
У меня программа состоит из множества функций. Не вызывать же мне в каждой функции
extract($_GET); extract($_POST); ? Значения теряются. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
Хм. достаточно сделать extract один раз, а в функция[ переменные описывать как global
|
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
ИМХО легче еще раз сделать extract, чем все переменные описывать, как global А при добавлении еще какой-то переменной - и ее придется в global пихать. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Ну это как кому нравится |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
а проще по моему register_globals включить.
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Master Не знаю, я всегда пользуюсь чем то вроде -
// присваиваем $HTTP_*_VARS переменной покороче - $PT = $HTTP_POST_VARS; // Потом так ей и пользуюсь ... -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
$PT = &$HTTP_POST_VARS; Тогда лучше так, память сэкономиш. Прошу прощения за оффтоп. -------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
к сведению: Эта функция экспортирует из ассоциативного массива элементы, делая их глобальными переменными! http://www.php.net/extract -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Да, это ясно. Но если вызвать extract вне функции, то в функции переменные будут недоступны! Получается, то extract надо вызывать в самом теле функции. Так ведь, вроде?
А дальше, что? |
||||
|
|||||
| Roland |
|
|||
|
Unregistered |
Неправда ваша только в текущей области видимости, если говорить словами пхп - в текущей символьной таблице. Таким образом если написать код: $a['var1']="value1"; $a['var2']="value2"; d(); echo $var1; ----- это ничего не выведет function d() { global $a; extract($a); echo $var1; ------ тут мы увидим value1 } переменные $var1,$var2 уничтожатся при выходе из функции d() |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Ты сам понял что написал?
Ты что считаеш что если в функции определить переменную глобальной её можно увидеть вне функции? Это была цитата из справочника!!! Это сообщение отредактировал(а) Master - 3.6.2003, 13:56 -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
Похоже ты чего-то не понял. Покажи мне хоть одну переменную, в приведенном мной коде, которая объявляется в функции и используется на верхнем уровне. Внимательнее читать надо. А насчет справочника - специально для тебя покопался ---CUT----------------- (PHP 3>= 3.0.7, PHP 4 ) extract -- Import variables into the current symbol table from an array Description int extract ( array var_array [, int extract_type [, string prefix]]) This function is used to import variables from an array into the current symbol table. It takes an associative array var_array and treats keys as variable names and values as variable values. For each key/value pair it will create a variable in the current symbol table, subject to extract_type and prefix parameters. ---CUT----------------- Найди тут хоть одно слово global |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
Master, где ваше обращение на ВЫ ;)
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Я сейчас начну грязно материться!
extract Экспорт элементов в переменные void extract (array var_array[, int extract_type [, string prefix]]) Эта функция экспортирует из ассоциативного массива var_array элементы, делая их глобальными переменными. Индекс элемента используется как имя переменной, а значение элемента - как значение переменной (глобальные переменные - это элементы "символьной таблицы" - массива глобальных переменных $GLOBALS[], и функция extract() копирует элементы массива var_array в массив $GLOBALS[]). Действие функции extract() .... дальше о наличии коллизий.
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Сорри, вообче-то я на Вы с незнакомыми, но так получилось, весь день со всеми на Ты -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
||||
|
Unregistered |
Не стоит материться. В этом справочнике не совсем верный перевод. Массив $GLOBALS содержит как раз информацию о всех глобальных переменных. Когда управление передается какой либо функции, создается символьная таблица переменных только для этой функции, чтобы перевести переменную из таблицы GLOBAL в текущую нужно описать ее внутри этой функции как gloabal $... Я согласен с приведенным тобой примером, но если его немного модифицировать, вот так: <?php function test() { global $arr; extract($arr); } $arr = array('name' => 'Master', 'email' => 'closed'); test(); print_r($GLOBALS); ?> то переменны name и email будут отсутствовать в $GLOBALS, а массив $arr естественно останется на месте. P.S. Я всегда был сторонником оригинальных документаций. Оказывается не зря. |
||||
|
|||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Ну естественно, чтобы в функции определить переменную надо её там опять глобалить. Так ведь всегда
И все-таки в справочники верный перевод. Во всяком случае он меня никогда не подводил. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
Извини, верю тому, что вижу. Пример с функцией не соответствует русскоязычному описанию |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Я подозреваю, что этот спор не имеет истины и считаю что каждый из нас останется при своем мнении.
Пусть так и будет -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
Дык это спор не ради пафоса и не ради утверждения свойе крутизны, а ради поиска единой истины
|
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Ну хорошо.
Я могу продолжить лишь тем, что с формальной точки зрения в книге написано все правильно, ведь переменные заносятся в массив $GLOBALS, так? а раз так то сформулировано все правильно. Но ты тоже имееш полное право считать себя правым потому как в оффициальной документации на http://www.php.net/extract я такого не нашел. Что тут ещё обсуждать? -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| Roland |
|
|||
|
Unregistered |
Результат работы след. скрипта показывает наглядно, что переменные $name и $email не заносятся в массив $GLOBALS.
<?php function test() { global $arr; extract($arr); print_r($GLOBALS); } $arr = array('name' => 'Master', 'email' => 'closed'); test(); ?> |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 7 Всего: 32 |
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
$method = $_SERVER["REQUEST_METHOD"];
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $HTTP_VARS = $HTTP_GET_VARS; if ($method == "POST") { $HTTP_VARS = $HTTP_POST_VARS; } else { $HTTP_VARS = $HTTP_GET_VARS; }; //$action = $HTTP_VARS["action"]; //global $HTTP_VARS; $id = $HTTP_VARS["id"]; |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |