Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';在PHP中,不要在函数的外部和内部使用值_Php_Function_Scope_Global - Fatal编程技术网

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");