我有这个字符串:
$currentpath = basename(__FILE__);
如果我写
echo $currentpath;
返回navleft.php
现在我的职能:
function colorButton() {
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
但如果我调用该函数
colorButton();
我总是得到navbuttonoff。
为什么会这样?
答案 0 :(得分:4)
您需要了解variable scope。 $currentpath
无法使用colorButton
,除非您将其作为参数传递(或使用global
等恶意内容):
function colorButton($currentpath) {
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
手册中的完美示例:
<?php
$a = 1; /* global scope */
function test()
{
echo $a; /* reference to local scope variable */
}
test();
?>
此脚本不会产生任何输出,因为echo语句引用$ a变量的本地版本,并且尚未在此范围内为其分配值。
答案 1 :(得分:0)
您需要:
<强> 1。使用全局
function colorButton() {
global $currentpath;
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
或者,更好的解决方案:
<强> 2。将路径作为参数传递
function colorButton($currentpath) {
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
colorButton($currentpath);
您应该了解的事项:
答案 2 :(得分:0)
你不能从像这样的函数中调用变量......
应该是
<?
$currentpath = 'navleft.php';
function colorButton() {
global $currentpath;
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
colorButton();
或者喜欢这个
<?
$currentpath = 'navleft.php';
function colorButton($currentpath) {
if($currentpath == "navleft.php") {
echo "navbuttonon";
} else {
echo "navbuttunoff";
}
}
colorButton($currentpath);