Передача массивов в PHP

  • Автор темы Бедняга
  • Дата начала

Бедняга

Guest
Передача массивов в PHP

Уважаемые господа, расскажите пожалуйста каким образом можно передать массив из одного php-скрипта в другой. А может это и вообще не потребуется:

file.php
//Массив $result содержит двумерный массив
include "another_file.php";

another_file.php
//Здесь используется массив $result

При выполнении file.php скрипт another_file.php не видит массива $result, поэтому его нужно передать ему (или я чего-то не знаю). Но как это сделать?
Пробовал сериализацию, не получается, может кто умеет правильно ее использовать? Методом GET умею передавать только переменные. Может POST'ом можно как? Преобразование массива с помощью implode не подходит
 

Фанат

oncle terrible
Команда форума
при инклюде ничего передавать никуда не надо.
 

Бедняга

Guest
Пишем:

1.php
$a=50;
include "2.php"

2.php
$a+=1;
echo $a

Чему теперь равно $a?Нифига не 51!
 

Бедняга

Guest
А вот чему:

from 1.php: 50
from 2.php: 1
from 1.php after 2.php: 50

в 2.php $a видимо переинициализируется в нуль и потом добавляется единица.
Может чего с настройкой php5-он у меня как cgi-приложение через 2-ый apache работает???
Если передать второму файлу переменную $a методом GET, то все пашет. В чем же дело?
 

crocodile2u

http://vbolshov.org.ru
Чистый мед! php5 как cgi через 2-ой apache!

Конечно, есть сильные подозрения, что дело все-таки в руках, которые писали скрипт, и все-таки:
пхп как модуль лучше, чем как ЦГИ;
пхп5 - делается все лучше и избавляется потихоньку от багов, но все-таки пока еще они есть. (КСТАТИ: если не ошибаюсь, был как раз некий баг, касающийся использования include - вроде рекомендуется использовать include_once)
пхп с Апач2 - вообще не рекомендуется использовать. На форуме много раз давали соответствующие ссылки.
 

Бедняга

Guest
Вот как модуль php5 с apache 2 как раз и не работает. А как cgi-приложение работает отлично. Руки?Пишу еще раз:

1.php
<?php
$a=50;
echo "from 1.php: ",$a,"<p>";
include "http://localhost/exam/2.php";
echo "from 1.php after 2.php: ",$a,"<p>";
?>

2.php
<?php
$a+=1;
echo "from 2.php: ",$a,"<p>";
?>

Вот что выводится:
from 1.php: 50
from 2.php: 1
from 1.php after 2.php: 50

Ну где здесь ошибка???
Попробую include_once
 

Бедняга

Guest
Запустил Denver с первым апачем и пхп4. Не работает. Denver подсказывает, что переменная $a, которая в 2.php первый раз встречается не инициализирована. Include_once тоже не работает. Что за фигня? что я не так делаю? Если в 2.php создать $b и попытаться использовать ее в 1.php после инклюла 2.php, то таже херня
 

SiMM

Новичок
> include "http://localhost/exam/2.php";
Я вот сижу и смотрю в свою файловую систему и никак не могу найти там такой путь - может подскажешь, где ты его нашёл?
 

Бедняга

Guest
НАШЕЛ!
Если заинклюдить файл, а не ссылку, то все работает:
include "2.php";
Почему так?
 

Бедняга

Guest
SIMM, настроил апач на определенную папку, которая есть localhost. В той папке имеется .../exam/1.php

-~{}~ 01.02.05 17:59:

neko, но ведь а апаче прописано, что localhost есть C:/blablabla/, а папка exam находится по пути C:/blablabla/exam. Выходит что обратиться к http://localhost это то же самое, что обратиться к C:/html

-~{}~ 01.02.05 18:03:

Точнее DocumentRoot есть C:/blablabla, а дальше идет полное совпадение подпапок
 

neko

tеam neko
нихрена это не значит
иди читай еще
иди читай весь тот сайт с которого ссылка
 

Бедняга

Guest
То есть когда я пишу include "http://localhost ...... /2.php", то пхп ищет такой файл на локальном диске и ясно дело не находит.
А если я напишу:
include "http://www.chtougodno.com/file.php?x=1&y=2", то пхп полезет на www.chtougodno.com/ и найдет там file.php.

Дак почему бы ему не полезть на http://localhost/ при работающем веб-сервере, который разъяснит ему, что http://localhost/ (корень для браузера) есть C:/blablabla (корень для локальной системы), ведь в свойстве DocumentRoot написано, что это C:/blablabla???
 

crocodile2u

http://vbolshov.org.ru
Да, юморной тред...

Бедняга: прежде чем пользоваться функциями/конструкциями языка - почитай мануал по этим темам.

-~{}~ 01.02.05 18:52:

Да, этому треду точно место в юморе!
Бедняга, тебе срочно нужно читать весь phpfaq.ru. А также - почитай о протоколе HTTP - ты же все-таки его используешь - негоже, если это для тебя всего лишь буквосочетание
 

Бедняга

Guest
Дак прочитал. В мануале вычитал, что конструкция

"include 'http://www.example.com/file.php?foo=1&bar=2'"

корректна, если сервак "сконфигурирован для разбора.php". Не пойму чем отличается www.example.com от http://localhost. Апач ведь эмулирует запрос к серверу. Я могу в его конфиге указать не localhost, а www.example.com. Если в конфиге установлено соответствие между виртуальным корнем и локальным, то в чем проблема? Апач получит запрос от броузера, переправит его на обработку пхп-движку, при этом укажет ему, что $_SERVER['DOCUMENT_ROOT']=C:/blablabla и все ссылки на локальные файлы будут обрабатываться корректно, по полному пути к соответствующим файлам
 
Сверху