我有一个带有以下代码的 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;
}
问题是在switch语句中调用时, $ engines 数组似乎是null(或类似的东西)。
我还尝试删除 init.php 中的 return 命令并将其包含在内而不进行分配,但在这种情况下,数组根本不存在(在 switch 语句中为不存在的变量返回异常错误)。 我无法理解什么是错的。
如何在另一个文件中使用数组?
非常感谢。
编辑:我使用EasyPHP与php版本5.4.24
答案 0 :(得分:0)
您正在将$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
设置了值,因此当您的当前文件运行该代码时,该代码将创建该数组。
答案 1 :(得分:0)
init.php SB
<?php
$engines = [
"id" => [
'A',
'B',
'C'
],
"url" => [
'D',
'E',
'F'
]
];
?>
你不需要在那里使用返回,然后就像cronoclee所说的那样......