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: 

2 番目の ISP、country、state、および town は in でtest.phpあり、何も表示されず、最初のものは insidelocation.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 に答える