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

时间:2015-03-10 18:59:53

标签: php arrays include return require

我有一个带有以下代码的 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

2 个答案:

答案 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所说的那样......