0

私は2つのphpファイルを持っています。最初のファイルには 2 番目のファイルが含まれます。これはすべて機能します。ただし、配列を持っている 2 番目のファイルを int します。

//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
}

ご覧のとおり、「グローバル」を使用してみましたが、これも機能しません。この問題を解決するのを手伝ってもらえますか?

完全を期すために、ここに 2 つのファイルを示します ;)

ファイル 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

「file1.php」を「file2.php」に含めてください。そうすれば動作します。

例 :

file1.php

<?php

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

?>

file2.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

助けてくれてありがとう。

それを使用して、最初のファイルと2番目のファイルの関数で $reqSettings をグローバルとして宣言すると、同じことを行うのに役立つこともわかりました。

file1.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";
        }

    }

?>

file2.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 に答える