LINUX.ORG.RU

PHP и массив


0

0

Имеется такой код:

index.php -----------------------------------------------------------
<?
	include('header.php');

	if($_GET["page"] == NULL) $PAGE=0;
	else $PAGE = $_GET["page"];

	print_header($PAGE);
?>
---------------------------------------------------------------------

header.php ----------------------------------------------------------
<?
 	$name_pages = array ("One", "Two", "Three", "Four");

	function print_header($PAGE){

		echo $PAGE;
		echo $name_pages[$PAGE];

	}

?>
----------------------------------------------------------------------

Если сделать такой вызов:
http://127.0.0.1/webdev/index.php?page=2

То всё что я получаю, это вывод переменной $PAGE но не элемента массива
с индексом равным $PAGE, в данном случае это 2.

Вывод: --------------------------------------------------------------
2
---------------------------------------------------------------------

При этом если перенести массив внутрь функции print_header(),
то элемент массива выводится.

Собственно вопрос такой, почему не видно содержимое массива вне
этой функции?!

Заранее спасибо!!!
★★★★★

Ответ на: комментарий от Selecter

Хотя и так ясно:
Ты забыл указать в теле функции: global $name_pages;

Глобальные переменные - очень плохой тон. Отвыкай.

Selecter ★★★★
()

а кто будет колдунское слово 'global' писать ?
тут нам не C/c++, тут совсем другая морква

MKuznetsov ★★★★★
()
Ответ на: комментарий от cyclon

Включи ещё notice, чтобы в следующий раз выскочила заметка о обрашении к необъявленной переменной.

Selecter ★★★★
()
Ответ на: комментарий от cyclon

>пробовал включать в php.ini глобальные переменные но не помогло...:(

Хотел сделать дырявый пхп-код еще более дырявым?

anonymous
()
Ответ на: комментарий от cyclon

Делал так?

header.php ---------------------------------------------------------- <? $name_pages = array ("One", "Two", "Three", "Four");

function print_header($PAGE){ global $name_pages; echo $PAGE; echo $name_pages[$PAGE];

}

?> ----------------------------------------------------------------------

anonymous
()
Ответ на: комментарий от anonymous

Делал так?

header.php ----------------------------------------------------------
<?
$name_pages = array ("One", "Two", "Three", "Four");

function print_header($PAGE){
global $name_pages;
echo $PAGE;
echo $name_pages[$PAGE];

}

?> ----------------------------------------------------------------------

anonymous
()
Ответ на: комментарий от anonymous

TO anonymous (*) (14.11.2006 9:51:46)

огромный сенкс!!!!

а может кто обьяснить почему массив не попадает в область видимости внутри функции?!

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Потому, что в похапе, если не ошибаюсь, только суперглобалы _GET, _POST и, кажется, _FILES попадают в область видимости внутри функции. Так устроен мир, ничего не поделаешь. Единственный выход - отказаться от похапе.

Miguel ★★★★★
()
Ответ на: комментарий от djung

Мне нужен массив который инициализируется в другой функции, потом с этим массивом работает другая функция и.т.д. и только потом моя...

cyclon ★★★★★
() автор топика
Ответ на: комментарий от AngryElf

ну хотя бы объявить его (масив) в начале программы, а не в ф-ции, а в ф-циях писать global $names, где надо.

судя по коду, похоже изобретается какой-то велосипедистый движок, хотя часто это полезно и правильно :)

ELF ★★
()
Ответ на: комментарий от ELF

Ну во первых не движок, а во вторых хочу написать тулзу для мониторинга серваков (в основном для себя, но может кому то же пригодится), но похоже буду писать его на перле, поизучаю его, а заодно сравню с пыхом

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

писал я как-то фейс к базе данных, на перле, недели две парился, сначала на cgi сделал, тормозит (а мне надо было с компакта еще запускать, WAMP), потом переписал на модперл, стало быстрее, но памяти жрет..., потом не пыхе переписал, за пару дней, работало чуть быстрее модперла и по памяти меньше, не подумайте что за пых агитирую, перл все равно мне больше, наверно надо было на Ruby все делать :) хотя еще тот тормоз, так что идеального языка нету, ну может Lisp только :)

ELF ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.