如何解决无法理解行为
| 为什么即使我的代码是这样的:if ( ! function_exists(\'get_values\')){
global $str;
function getValues($getThem,$tpar,$vpiso,$tcomi,$tgas,$ttotal){
$totalPares = $tpar;
$ventasPiso = $vpiso;
$totalComisiones = $tcomi;
$totalGastos = $tgas;
$totalTotal = $ttotal;
$str = $totalPares . \",\" . $ventasPiso . \",\" . $totalComisiones . \",\" . $totalGastos . \",\" . $totalTotal;
return $str;
}
function getEm(){
return $str;
}
}
我无法覆盖$ str的值。如果我尝试回显它,它总是打印出“ a”,并且在“ getEm”函数中它表示它是未定义的变量。
这是codeigniter框架中的帮助文件。
编辑
这仍然给我这个错误:
遇到PHP错误
严重程度:注意
消息:未定义的变量:str
文件名:
helpers / helper_common_functions_helper.php
行号:15
解决方法
global $str;
您需要研究变量范围。函数有其自身的作用域,除非您一开始有ѭ2to来访问该函数之外的变量。另请注意,使用全局变量是“ nono”,应不惜一切代价避免使用。
function getValues($getThem,$tpar,$vpiso,$tcomi,$tgas,$ttotal){
global $str;
$totalPares = $tpar;
$ventasPiso = $vpiso;
$totalComisiones = $tcomi;
$totalGastos = $tgas;
$totalTotal = $ttotal;
$str = $totalPares . \",\" . $ventasPiso . \",\" . $totalComisiones . \",\" . $totalGastos . \",\" . $totalTotal;
return $str;
}
, 如果要使状态保持在一定范围内,则应使用该类。不推荐global
class MyClass {
private $str = \"a\";
public function getValues($getThem,$ttotal){
$totalPares = $tpar;
$ventasPiso = $vpiso;
$totalComisiones = $tcomi;
$totalGastos = $tgas;
$totalTotal = $ttotal;
$str = $totalPares . \",\" . $totalTotal;
return $str;
}
public function getEm(){
return $this->str;
}
}
然后,您需要实例化该类,然后才能使用它(当然),但是请保持范围整洁
$x = new MyClass;
echo $x->getEm();
如果仅使用静态属性和方法创建类,则无需实例化(MyClass:getEm()
)。
, 全局变量看起来放错了位置,也许这会有所帮助:
if ( ! function_exists(\'get_values\')){
function getValues($getThem,$ttotal){
global $str; ##### <- place it here
$totalPares = $tpar;
$ventasPiso = $vpiso;
$totalComisiones = $tcomi;
$totalGastos = $tgas;
$totalTotal = $ttotal;
$str = $totalPares . \",\" . $totalTotal;
return $str;
}
function getEm(){
global $str; ##### <- place it here
return $str;
}
}
旁注:我真的不知道codeigniter的设计水平如何,但是使用名为$str
的全局变量对我来说听起来像是在问麻烦。给它起一个更好地反映其所属名称和含义的名称。 string10ѭ尽管弦说不多。查找名称的一些技巧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。