2014-08-27 3 views
-1

У меня есть два файла, которые загружаются на страницу (body.php и footer.php).PHP Глобальные переменные в .php-файлах

В теле есть:

<?php global $pageName = "foo";?> 

В сноске у меня есть:

<?php echo $pageName;?> 

Однако, это Эхо из ничего. Я что-то упускаю?

+2

здесь не нужно ключевое слово 'global', эта переменная уже определена в глобальной области. Вы указали страницу нижнего колонтитула? – andrew

ответ

1

Вы не должны определять глобальную переменную как глобальную. Вы можете использовать этот кусок кода в вашем теле:

<?php $pageName = 'foo'?> 

И этот кусок кода в футере:

<?php global $pageName; echo $pageName //$pageName from body.php ?> 

Альтернативой является создание page.php файла, где вы положили ваши данные например:

<?php 
// (Inside page.php) 
$pageName = 'foo'; 
require('header.php'); // Use $pageName in header.php without global 
require('body.php'); // Use $pageName in body.php without global 
require('footer.php'); // Use $pageName in footer.php without global 
?> 

Счастливое кодирование!

+0

Спасибо. Мой вопрос был, вероятно, неясным - но это было поведение, к которому я стремился, и отлично работал. – user1149620

1

Глобальная область видится только для файла, в котором находится varibale. Что вы можете сделать, это includefooter.php, тогда ваш код будет работать.

body.php:

<?php $pageName = "foo"; //No need for the global, the varibale is already in the global scope 
include 'footer.php'; 
?> 

Будет ли эхо из "Foo" в конце.

In the official documentation you can read about variable scoping

EDIT в соответствии с комментарием

Вы можете установить набор переменных в Session.

Так что ваш body.php будет выглядеть так:

<?php 
session_start(); //IMPORTANT, this must be the first action you do. 
$pageName = "foo"; //No need for the global, the varibale is already in the global scope 
$_SESSION['pageName'] = $pageName; 
?> 

Ваш footer.php:

<?php 
session_start(); //IMPORTANT, this must be the first action you do. 
echo $_SESSION['pageName']; 
?> 
+0

Спасибо, но это загружает всю страницу footer.php (которую я загружаю позже). Есть ли способ просто передать переменную через пожалуйста? – user1149620

+0

@ user1149620 вы загружаете страницу нижнего колонтитула в другое время !? хорошо, что имеет смысл тогда, почему его не работает. выполните поиск в google о том, как использовать '$ _SESSION' – andrew

+0

@ user1149620 Включите ли вы footer.php позже в body.php? – KhorneHoly

Смежные вопросы