我有一个包含以下代码的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 中的 return 命令.php并在不赋值的情况下包含它,但在这种情况下,数组根本不存在(向我返回 switch 语句中不存在变量的异常错误)。我不明白出了什么问题。
如何在另一个文件中使用数组?
谢谢。
编辑:我使用带有php版本5.4.24的EasyPHP
您正在将$engines
设置为 require 语句的值。只是不要这样做,它应该可以正常工作。换句话说,更改:
$engines = require "init.php"; //the file with the array
自:
require "init.php"; //the file with the array
并从 init.php
中删除 return
语句。
这是有效的require
因为它只是在执行之前将外部文件中的代码包含在当前文件中。虽然在异常情况下,它可以像您尝试的那样使用,但在这种情况下,它不需要像函数那样运行并返回值。由于您在 init.php
中为 $engines
设置了一个值,因此当数组由当前文件运行时,该数组将由代码创建。
init.php SB
<?php
$engines = [
"id" => [
'A',
'B',
'C'
],
"url" => [
'D',
'E',
'F'
]
];
?>
你不需要在那里使用返回,然后正如克罗诺克利所说......