У меня есть файл init.php со следующим кодом:
$engines = [
"id" => [
'A',
'B',
'C'
],
"url" => [
'D',
'E',
'F'
]
];
return $engines;
Как вы можете видеть в этом файле, есть только массив, который нужен для инициализации сайта, который включен в другой файл следующим образом:
$engines = require "init.php"; //the file with the array
$urlsite='';
switch ($_POST['engn'])
{
case $engines['id'][0]:
$urlsite=$engines['url'][0]."/download/";
break;
case $engines['id'][1]:
$urlsite=$engines['url'][1]."/fixes/";
break;
case $engines['id'][2]:
$urlsite=$engines['url'][2]."/12555/";
break;
default:
echo '{"err":"true","errtype":"1"}';
break;
}
Проблема в том, что массив $ engine кажется нулевым (или чем-то подобным) при вызове в операторе switch.
Я также попытался удалить команду return в init.php и включить ее без присваивания, но в этом случае массив вообще не существует (верните мне исключение ошибка несуществующей переменной в операторе switch ). Не могу понять в чем дело.
Как использовать массив в другом файле?
Большое спасибо.
Изменить: я использую EasyPHP с версией php 5.4.24
2 ответа
Вы устанавливаете $engines
в значение оператора require. Просто не делайте этого, и все должно работать нормально. Другими словами, измените:
$engines = require "init.php"; //the file with the array
Чтобы :
require "init.php"; //the file with the array
И удалите оператор return
из init.php
.
Это работает, потому что require
просто включает код из внешнего файла в текущий файл до его выполнения. Хотя в необычных обстоятельствах его можно использовать так, как вы пытались, в этом случае ему не нужно запускать и возвращать значение, подобное функции. Поскольку вы установили значение для $engines
в init.php
, массив будет создан кодом, когда он будет запущен вашим текущим файлом.
Init.php SB
<?php
$engines = [
"id" => [
'A',
'B',
'C'
],
"url" => [
'D',
'E',
'F'
]
];
?>
Вам не нужно использовать return там, тогда, как сказал cronoclee ...
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.