Подобные вопросы уже задавались ранее, но после тщательного изучения нескольких рабочих примеров я не могу заставить это работать на меня.
Я пытаюсь получить доступ к переменной $nameValues
это было объявлено в insert-name.php
insert-name.php — первый скрипт, который запускается:
error_reporting(-1);
$nameValues = "'".implode("', '", array_values($nameArray))."'";
print_r($nameValues); // returns the expected variable
и insert-answer.php — второй скрипт для запуска:
error_reporting(-1);
require "insert-name.php";
if (isset($nameValues)) {
print_r("nameValues variable:" . $nameValues);
} else {
echo "variable nameValues does not exist";
}
//returns nameValues variable:'' indicating that $nameValues exists but is empty
Оба файла .php хранятся в одной папке на моем веб-сервере. Я пытался использовать оба require
а также include
заявления. Я успешно использую require
оператор для подключения к моей базе данных в обоих сценариях, не уверен, почему он не работает для insert-name.php
,
Об ошибках не сообщается.
Если оператор возвращает «nameValues variable: »» указывает на то, что $nameValues
переменная существует, но пуста
Я тоже пробовал заменить require "insert-name.php";
с require __DIR__."/insert-name.php";
который возвратил «переменная nameValues не существует» из оператора if.
Потому что ни один не дал фатальную ошибку какrequire
операторы успешно получили доступ к файлу insert-name.php, но я не знаю, почему один метод думает $nameValues
не существует, а другой думает $nameValues
пустой.
Нет проблем с доступом к переменным из другого файла, как если бы вы указали, что они находятся в той же области (одна не находится внутри функции и т. Д.). В вашем случае это выглядит так, как будто это просто случай, когда вы звоните print_r()
Когда вы делаете print_r('nameValues variable:" . $nameValues)
вы конвертируете $nameValues
в строку.
Попробуйте что-то вроде этого, чтобы сбросить $nameValues
:
error_reporting(-1);
require "insert-name.php";
if (isset($nameValues)) {
echo "nameValues variable: ";
print_r($nameValues);
} else {
echo "variable nameValues does not exist";
}
Как вы сказали:
returns nameValues variable:''
Была одна деталь, которую я упустил, кавычки в конце. Когда вы выводите строку в PHP, она печатает только содержимое (нет напечатанных цитат, если они не находятся в строке).
Фактически это все означает, что $nameArray
пусто, так что проверьте скрипт, который генерирует это. Кроме того, из-за того, как implode()
работает, array_values()
здесь полностью избыточно.
Как простой способ проверить это echo count($nameArray);
, Если вывод «0», массив пуст.