PHP函数不起作用

时间:2011-10-07 10:03:56

标签: php

我只是想编写一个可以切换背景颜色的函数。

每次运行时,它应该返回另一种颜色,但它不起作用

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)

4 个答案:

答案 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..
}