2015-12-11 2 views
0

Это не может быть правильная терминология «глобальная».Как хранить переменную PHP в глобальном режиме?

Что я пытаюсь понять, так это.

У меня есть что-то вроде:

<?php if (empty($nest)) { 
    $mothercrying = 'all day long'; 
    echo 'Mother is crying '.$mothercrying; 
} if (!empty($nest)) { 
    echo 'Mother is NOT crying '.$mothercrying; 
} ?> 

Есть ли какой-нибудь способ, чтобы объявить $mothercrying внутри первого if, так что я могу использовать его во второй, тоже?

Обратите внимание, что я не могу объявить $mothercrying перед обоими if заявлениями, поскольку то, с чем я работаю, на самом деле составляет пару сотен строк дольше этого.

+0

Попробуйте использовать сеанс, чтобы вы могли получить доступ к своей переменной в любом месте – momouu

+1

@ Натан, даже если код длиннее на пару сотен строк? Почему вы не можете объявить переменную до if. Кроме того, поскольку вы проверяете значение 'if (empty ($ nest))' почему бы не заменить 'if (! Empty ($ nest)) {' с 'else' – bIgBoY

+0

рядом с использованием сеанса, вы также можете использовать' define() ', http://php.net/manual/en/language.constants.php. в большинстве случаев глобальный - это зло – Andrew

ответ

0

Использование session

session_start(); 

if (empty($nest)) { 
    $mothercrying = 'all day long'; 
    $_SESSION['cry']= $mothercrying; 
    echo 'Mother is crying '.$_SESSION['cry']; 
} if (!empty($nest)) { 
    if(isset($mothercrying)){ 
    $_SESSION['cry']= $mothercrying; 
    }else{ 
    $_SESSION['cry']='all day long'; 
    }   
    echo 'Mother is NOT crying '.$_SESSION['cry']; 
} 
+0

Добавьте session_start() в начало каждого файла, чтобы вы могли получить доступ к сеансу. – momouu

+0

Как это работает? Если '$ nest' не пуст, тогда код будет через ошибку' Undefined index: cry ..', если '$ _SESSION ['cry']' не объявляется до первого if. – bIgBoY

+0

Я обновил код – momouu

1

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

define('MOTHER_CRYING', 'all day long'); 

ИЛИ

global $mothercrying; 
$mothercrying = 'all day long'; 
0

Это не глобальная проблема. Оба соглашения исключают друг друга. Второй if должен быть только else, и ваша переменная должна быть определена перед оператором if. Если второе утверждение истинно, первое может быть только ложным, и ваша переменная не будет определена!

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