0

我在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. 如果我使用此代码:

<?php
include('location');
    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,国家,州和城镇在test.php里面,不显示任何东西,第一个在里面location.php。整个问题是,我不能在外部或另一个 php 文件中使用在函数内部创建的变量。如何在外部使用变量?它与全局和范围有关吗?

对不起,如果我感到困惑,但现在快凌晨 3 点 30 分,我快疯了

4

3 回答 3

1

您可以使用 global 关键字来执行此操作

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;
?>

真的不应该有任何理由像这样的东西对你不起作用。

于 2013-05-23T01:29:18.760 回答
1

您不应该尝试将变量提升到include语句上,这会导致代码混乱。include不像函数调用。

通常,您想要的include文件类型是其中仅包含函数或类定义的文件。然后你可能会想要使用include_once.

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);
于 2013-05-23T01:25:37.197 回答
0

我不完全确定您为什么会遇到问题

我经常有一个“Dim.php”文件来定义常量字符串,然后包括使用:

include("location.php");

使用 .php 扩展名可以解决您的问题吗?

于 2013-05-23T01:32:58.447 回答