我有两个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;
}
?>
答案 0 :(得分:2)
请将“file1.php”包含在“file2.php”中,然后才能生效。
示例:
file1.php
<?php
$array = array(
"name" => "test"
);
&GT;
file2.php
<?php
include_once("file1.php");
function test()
{
global $array;
echo "<pre>";
print_r($array);
}
test();
?>
在这里,您可以看到,它将在file2.php中打印$ array。在file1.php中声明。
希望它会有所帮助。
答案 1 :(得分:1)
您已将参数$ arr放入您未提供的函数中。它是这样的:
if (apiSettingsOk($reqSettings) === true) {
echo "CORRECT";
}
功能
function apiSettingsOk($arr) {
echo count($arr); //returns 0 and not 3
}
答案 2 :(得分:0)
非常感谢您的帮助。
使用它我也发现在第一个文件和第二个文件的函数中将$ 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;
}
?>