我只是想编写一个可以切换背景颜色的函数。
每次运行时,它应该返回另一种颜色,但它不起作用
function bgcolour_switch(){
if(!isset($p)){
global $p;
$p = "#C0C0C0";
return $p;
}else{
if($p == "#C0C0C0"){
$p = "#FFFFFF";
return $p;
}elseif($p == "#FFFFFF"){
$p = "#C0C0C0";
return $p;
}
}
}
我一直得到相同的颜色(#C0C0C0)
答案 0 :(得分:6)
嗯,$p
最初从未在函数范围内设置,因此if语句的计算结果始终为true。
尝试将global $p;
行移到函数的开头,在if语句之前。
答案 1 :(得分:2)
$ p是一个局部变量。它的范围是函数本身。每次调用此函数时,它都会被重置,因此第一行的isset($p)
永远不会评估为真。
如果$p
是全局变量,请在函数开头添加下一行(在if上方)。
global $p;
您也可以将代码编写得更短。它甚至可以短得多,但以这种方式它仍然可以读取。
function bgcolour_switch(){
global $p;
if(!isset($p) || $p === "#FFFFFF")
$p = "#C0C0C0";
else
$p = "#FFFFFF";
return $p;
}
答案 2 :(得分:1)
在检查global
是否存在之前,请致电$p
。试试这个(未经测试):
<?php
function bgcolour_switch(){
global $p;
if(!isset($p)){
$p = "#C0C0C0";
return $p;
}else{
if($p == "#C0C0C0"){
$p = "#FFFFFF";
return $p;
}elseif($p == "#FFFFFF"){
$p = "#C0C0C0";
return $p;
}
}
}
答案 3 :(得分:-1)
让功能需要$ p
function fname($p = null){
//such and such..
}