global关键字的效用是什么?
是否有任何理由更喜欢一种方法?
方法1:
function exempleConcat($str1, $str2)
{
return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)
方法2:
function exempleConcat()
{
global $str1, $str2;
return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)
什么时候使用有意义global?
对我来说,它似乎很危险 ......但它可能只是缺乏知识.我感兴趣的是记录(例如代码示例,文档链接......)技术原因.
提前致谢!
这是关于这个主题的一个很好的一般性问题,我(@Gordon)正在提供奖励以获得更多答案.无论您的答案是否与我的答案一致或给出不同的观点都无关紧要.由于该global主题时不时出现,我们可以使用一个很好的"规范"答案来链接.
function foo () {
global $var;
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;.
这是不好的做法吗?
我正在尝试构建一个将html_entity_decode应用于对象和数组的函数.由于我事先不知道结构,并且子属性也可以是对象或数组,因此简单的递归函数似乎是要走的路.我无法弄清楚为什么以下不起作用:
function decode($data){
if(is_object($data) || is_array($data)){
foreach($data as &$value)
$value = $this->decode($value);
}
else $data = html_entity_decode($data);
return $data;
}
Run Code Online (Sandbox Code Playgroud)
我也试过以下,但也不起作用:
function decode($data){
if(is_object($data))
$data = get_object_vars($data);
$data = is_array($data) ? array_map(array('MyClassName', 'decode'), $data) : html_entity_decode($data);
return $data;
}
Run Code Online (Sandbox Code Playgroud)
这两种功能都不会对数据产生任何影响.我究竟做错了什么?
index.php文件中出现此错误
警告:非法字符串偏移'id'警告:非法字符串偏移'std'
<?php
global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) {
$$value['id'] = $value['std'];
} else {
$$value['id'] = get_settings( $value['id'] );
}
}
Run Code Online (Sandbox Code Playgroud)
尝试在Wordpress中加载新主题时出现此问题...