如何使用 php 中包含文件的数组?

how to use array by included file in php?

我有一个 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;
    }

问题是 $engines 数组在 switch 语句中调用时似乎为空(或类似的东西)。

我还尝试删除 init.php 中的 return 命令并在没有赋值的情况下包含它,但是,在这种情况下,数组根本不存在(return 我是 switch 语句中不存在的变量的异常错误)。 我不明白哪里出了问题。

如何在另一个文件中使用数组?

非常感谢。

编辑:我使用 EasyPHP php 版本 5.4.24

您正在将 $engines 设置为 require 语句的值。只是不要这样做,它应该可以正常工作。换句话说,更改:

$engines = require "init.php"; //the file with the array

至:

require "init.php"; //the file with the array

并从 init.php 中删除 return 语句。

这是有效的,因为 require 只是在 执行之前 将外部文件中的代码包含在当前文件中。虽然在特殊情况下,它可以像您尝试的那样使用,但在这种情况下,它不需要像函数那样 运行 和 return 一个值。由于您在 init.php 中为 $engines 设置了值,因此当当前文件为 运行 时,代码将创建该数组。

init.php SB

<?php

$engines = [
    "id" => [
        'A',
        'B',
        'C'
        ],
    "url" => [
        'D',
        'E',
        'F'
        ]
];
?>

你不需要在那里使用 return,然后正如 cronoclee 所说...