изменения переменных php

#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-файл, который, как я думал, ничего не делал, хотя на самом деле он определял переменную.