0

我有两个 php 文件。第一个文件将包括第二个文件。这一切都有效。但是,在第二个文件中,我有一个数组:

//set required items
$reqSettings = array(
    "apiUser" => true,
    "apiPass" => true,
    "apiKey" => true,
);

在第一个文件中调用的函数中,我想遍历该数组,但是该函数无法识别它:

function apiSettingsOk($arr) {
    global $reqSettings;

    $length = count($reqSettings);

    echo $length; //returns 0 and not 3
}

如您所见,我尝试使用“全局”,但这也不起作用。你能帮我解决这个问题吗?

为了完整起见,这是两个文件;)

文件 1:

$apiArr = array();

if (isset($_POST['api-submit'])) {

    $gateWay =  $_POST['of-sms-gateway'];
    $apiArr['apiUser'] = $_POST['api-user'];
    $apiArr['apiPass'] = $_POST['api-passwd'];
    $apiArr['apiKey'] = $_POST['api-key'];

    //including the gateway file
    include_once('of_sms_gateway_' . $gateWay . '.php');

    if (apiSettingsOk() === true) {
        echo "CORRECT";
    }

}

?>

of_sms_gateway_test.php :

<?php

//set required items
$reqSettings = array(
    "apiUser" => true,
    "apiPass" => true,
    "apiKey" => true,
);

function apiSettingsOk($arr) {
    global $reqSettings;
    $returnVar = true;

    $length = count($reqSettings);

    echo $length;

    return $returnVar;

}
?>
4

3 回答 3

2

请在“file2.php”中包含“file1.php”,然后它将起作用。

例子 :

文件1.php

<?php

$array = array(
    "name" => "test"
);

?>

文件2.php

<?php

 include_once("file1.php");

 function test()
 {
     global $array;
     echo "<pre>";
     print_r($array);
 }

 test();
?>

在这里,您可以看到,它将在 file2.php 中打印 $array。在 file1.php 中声明。

希望它会有所帮助。

于 2013-05-30T13:42:41.850 回答
1

您已将 $arr 参数添加到您未提供的函数中。像这样:

if (apiSettingsOk($reqSettings) === true) {
    echo "CORRECT";
}

和功能

function apiSettingsOk($arr) {
echo count($arr); //returns 0 and not 3
}
于 2013-05-30T13:41:01.220 回答
0

非常感谢您的帮助。

使用它我还发现它有助于在第一个文件和第二个文件中的函数中将 $reqSettings 声明为全局以执行相同的操作

文件1.php

<?php
    global $reqSettings;
    $apiArr = array();

    if (isset($_POST['api-submit'])) {

        $gateWay =  $_POST['of-sms-gateway'];
        $apiArr['apiUser'] = $_POST['api-user'];
        $apiArr['apiPass'] = $_POST['api-passwd'];
        $apiArr['apiKey'] = $_POST['api-key'];

        include_once('of_sms_gateway_' . $gateWay . '.php');

        if (apiSettingsOk($apiArr) === true) {

            echo "OK";

        } else {
            echo "ERROR";
        }

    }

?>

文件2.php

<?php

    $reqSettings = array(
        "apiUser" => true,
        "apiPass" => true,
        "apiKey" => true,
    );

    function apiSettingsOk($arr) {
        global $reqSettings;
        $returnVar = true;

        $length = count($reqSettings);
        echo $lenght; //now shows 3

        return $returnVal;
    }

?>
于 2013-05-30T14:08:22.260 回答