#php
#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)
Комментарии:
1. Выполняется ли это один раз на страницу или несколько раз? Если это один раз на страницу, то вам нужно сохранить предыдущий цвет фона в сеансе или файле cookie, потому что HTTP не имеет состояния. Кроме того, $ p никогда не будет установлен при тестировании isset.
Ответ №1:
Ну, $p
никогда изначально не устанавливается в области вашей функции, поэтому оператор if всегда принимает значение true.
Попробуйте переместить global $p;
строку в начало функции, перед оператором if.
Ответ №2:
$p — это локальная переменная. Ее область действия — это сама функция. Каждый раз, когда вы вызываете эту функцию, она сбрасывается, поэтому isset($p)
в первой строке никогда не будет оцениваться как true.
Если $p
является глобальной переменной, добавьте следующую строку в начале вашей функции (над if).
global $p;
Вы также могли бы написать свой код немного короче. Она может быть даже намного короче, но таким образом она все еще доступна для чтения.
function bgcolour_switch(){
global $p;
if(!isset($p) || $p === "#FFFFFF")
$p = "#C0C0C0";
else
$p = "#FFFFFF";
return $p;
}
Ответ №3:
Вызовите, 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;
}
}
}
Ответ №4:
Для функции требуется $ p
function fname($p = null){
//such and such..
}