Can';在PHP中,不要在函数的外部和内部使用值
我在Can';在PHP中,不要在函数的外部和内部使用值,php,function,scope,global,Php,Function,Scope,Global,我在location.php中有一个函数,其中包含以下代码: $isp = $ipInfo["isp"]; $country = $ipInfo["country"]; $state = $ipInfo["state"]; $town = $ipInfo["town"]; echo "ISP: " . $isp . "<br>\n"; echo "Country: " . $country . "<br>\n";
location.php
中有一个函数,其中包含以下代码:
$isp = $ipInfo["isp"];
$country = $ipInfo["country"];
$state = $ipInfo["state"];
$town = $ipInfo["town"];
echo "ISP: " . $isp . "<br>\n";
echo "Country: " . $country . "<br>\n";
echo "State: " . $state . "<br>\n";
echo "Town: " . $town . "<br>\n";
在test.php
中,我得到以下输出:
ISP: dslb-094-219-040-096.pools.arcor-ip.net
Country: DE - Germany
State: Saarland
Town: Schiffweiler
ISP:
Country:
State:
Town:
第二个ISP,country,state和town在test.php中,不显示任何内容,第一个ISP在location.php中。整个问题是,我不能在函数外部或其他php文件中使用在函数内部创建的变量。如何在外部使用变量?
它与全局和范围有关
抱歉,如果我弄糊涂了,但现在快凌晨3:30了,我快发疯了你不应该试图在include
语句上提升变量,这会导致代码混乱include
与函数调用不同
通常,您希望包含的文件类型是仅包含函数或类定义的文件。然后您可能需要使用include\u一次
include
对于模板之类的东西很有用,在模板中,您可能会重复同一个文件,但只对PHP代码有用:否
正确的方法如下所示:
// location.php
function printIPInfo($ipInfo) { // THIS is a function
$isp = $ipInfo["isp"];
$country = $ipInfo["country"];
$state = $ipInfo["state"];
$town = $ipInfo["town"];
echo "ISP: " . $isp . "<br>\n";
echo "Country: " . $country . "<br>\n";
echo "State: " . $state . "<br>\n";
echo "Town: " . $town . "<br>\n";
}
// test.php
include_once('location.php');
printIPInfo($ipInfo);
//location.php
函数printIPInfo($ipInfo){//这是一个函数
$isp=$ipInfo[“isp”];
$country=$ipInfo[“country”];
$state=$ipInfo[“state”];
$town=$ipInfo[“town”];
回显“ISP:.$ISP.”
\n;
回显“国家:.$Country.”
\n;
回显“状态:.$State.”
\n;
回声“Town:.$Town.”
\n;
}
//test.php
包括_once('location.php');
printIPInfo($ipInfo);
您可以使用全局关键字执行此操作
function my_func()
{
global $isp,$country,$state,$town;
//do stuff to variables
}
echo $isp.$country.$state.$town;
像这样的东西会有用的。虽然更好的选择可能是在return语句中返回变量
--编辑--
刚做了一个工作模型
p1.php
<?php
function a()
{
global $b,$c,$d;
$b='hi';
$c='bye';
$d='what';
}
a();
?>
p2.php
<?php
include 'p1.php';
echo $b.$c.$d;
?>
没有任何理由像这样的事情对你不起作用。我不完全确定你为什么会有问题
我通常有一个“Dim.php”文件来定义常量字符串,然后包括使用:
include("location.php");
使用.php扩展名可以解决您的问题吗?我在发布之前就这样做了。事实并非如此work@F4LLCON用经过测试的工作脚本编辑了我的文章。您确定在尝试访问变量之前执行了该函数吗?是的,我现在已经测试了您的代码,它可以工作了!我会去清理我的代码
include("location.php");