function parts($part) {
$structure = 'http://' . $site_url . 'content/';
echo($tructure . $part . '.php');
}
この関数はこのページの一番上に定義された変数$site_url
を使用しますが、この変数は関数に渡されません。PHP関数外部からの変数を使用
どのように関数に返すのですか?
function parts($part) {
$structure = 'http://' . $site_url . 'content/';
echo($tructure . $part . '.php');
}
この関数はこのページの一番上に定義された変数$site_url
を使用しますが、この変数は関数に渡されません。PHP関数外部からの変数を使用
どのように関数に返すのですか?
あなたは、あなたの関数に追加のパラメータを渡す必要がある二番目のパラメータを追加:クロージャの場合
function parts($site_url, $part) {
$structure = 'http://' . $site_url . 'content/';
echo $structure . $part . '.php';
}
を
あなたはというし、クロージャを使用したい場合はすることができます変数を現在のスコープにインポートします(use
キーワード):
$parts = function($part) use ($site_url) {
$structure = 'http://' . $site_url . 'content/';
echo $structure . $part . '.php';
}
global
- 悪い習慣
この投稿は頻繁に読むので、何かを約global
を明確にする必要があります。それを使用することは悪い習慣と考えられます(thisとthisを参照)。ここで完全に期すため
はglobal
を使用してソリューションです:
function parts($part) {
global $site_url;
$structure = 'http://' . $site_url . 'content/';
echo($structure . $part . '.php');
}
あなたはグローバル変数を使用したいインタプリタを伝えるために持っているので、それは動作しますが、今ではが、それは(内のローカル変数だと思っあなたの機能)。
候補]読書:ジャスト機能に入れ
:グローバルの$ SITE_URL。
また、use
キーワードのクロージャを使用して、変数を外部スコープからインポートすることもできます。
$myVar = "foo";
$myFunction = function($arg1, $arg2) use ($myVar)
{
return $arg1 . $myVar . $arg2;
};
このようにして少し難しくなります。たとえば、このように変数が10個ある場合は、難しくなります。 – M98
PHPでエラーが表示される理由は何ですか?解析エラー:構文エラー、予期しない 'use'(T_USE)、 '{' – M98
@ Kermaniが期待しているのは、 'use'構文を持たない古いバージョンのPHPを使用している可能性があります。この構文はPHP5.3で導入されました。 https://wiki.php.net/rfc/closures –