如何在 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;
    }

问题是在 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'
        ]
];
?>

你不需要在那里使用返回,然后正如克罗诺克利所说......