#php #variables
#php #переменные
Вопрос:
ИСПРАВЛЕНО!
У меня есть 2 страницы php, которые обе определяют переменную «title» как нечто другое. Однако повторное использование переменной на обеих страницах приводит к тому, что значение переменной первой страницы отображается на обеих страницах. Есть идеи, почему и как я мог бы изменить переменную для каждой страницы?
первая страница php:
<?php
$title = "Posts";
echo $title;
?>
При этом отображаются «Сообщения».
вторая страница php:
<?php
$title = "New Posts";
echo $title;
?>
Это также по какой-то причине отображает «Сообщения». Разве на этой странице не должны отображаться «Новые сообщения»?
Комментарии:
1. Пожалуйста, покажите свой код, на самом деле это не подлежит ответственности как есть.
2. Не могли бы вы рассказать подробнее? Вы
include
переводите одну страницу на другую или …?3. Включен ли у вас [register_globals][1]? Какую версию PHP вы используете? [1]: php.net/manual/en/security.globals.php
4. только что добавлены примеры кода
5. PHP 5.3.5 с отключенным register_globals (Ubuntu 11.04)
Ответ №1:
Если вы включаете вторую страницу на первую страницу перед определением $title
на первой странице, то включенное значение будет перезаписано.
Все ли ваши переменные определены в глобальном пространстве имен? Если это так, то эта проблема будет неизбежна при включении PHP-файлов в другие PHP-файлы.
Вы могли бы решить проблему, правильно инкапсулировав свои переменные в классе или пространстве имен; например:
В файле one:
<?php
namespace included;
$title = "original title!";
?>
И во втором файле:
<?php
namespace including;
require_once "file_one.php";
$title = "new title!";
echo included$title;
echo including$title;
echo $title;
?>
Которые будут отображать:
original title!
new title!
new title!
Комментарии:
1. Я вообще не включаю страницы. Это две совершенно разные страницы. Однако каждая страница имеет одну и ту же переменную, только с другим значением.
2. Хм. Здесь что-то не сходится; вы скопировали весь соответствующий источник в свой вопрос?
3. @codedude Вы выполняете файлы по одному за раз? Если это так — на основе предоставленной вами информации — то, что вы описываете, невозможно. Возможно, они оба включены в общую третью страницу? :]
4. Я понял, что я делал неправильно. У меня есть включенный php-файл, который, как я думал, ничего не делал, хотя на самом деле он определял переменную.