一尘不染

PHP函数从外部使用变量

php

function parts($part) {
$structure = ‘http://’ . $site_url . ‘content/’;
echo($tructure . $part . ‘.php’);
}

该函数使用$site_url在页面顶部定义的变量,但是此变量未传递到该函数中。

我们如何使它返回到函数中?


阅读 533

收藏
2020-05-29

共1个答案

一尘不染

添加第二个参数

您需要将其他参数传递给函数:

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。使用它被认为是不好的做法(请参考thisthis)。

为了完整起见,这里是使用的解决方案global

function parts($part) { 
    global $site_url;
    $structure = 'http://' . $site_url . 'content/'; 
    echo($structure . $part . '.php'); 
}

之所以有效,是因为您必须告诉解释器您要使用全局变量,现在它 认为 它是局部变量(在函数内)。

2020-05-29