[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заключить в цикл повторяющееся условие
flashstream
Здравствуйте, подскажите пожалуйста как сделать циклическое условие из этого:
if ($_SESSION[check1]==''){$ch1="";} else {$ch1="checked";}
if ($_SESSION[check2]==''){$ch2="";} else {$ch2="checked";}
if ($_SESSION[check3]==''){$ch3="";} else {$ch3="checked";}
if ($_SESSION[check4]==''){$ch4="";} else {$ch4="checked";}
Здесь меняются только номера в именах переменных. Хотелось бы записать всё это через цикл, чтобы не писать однообразные строки.



Спустя 11 минут, 25 секунд (23.11.2011 - 17:02) GET написал(а):
сделайте цикл от 1 до 4.
Внутри
$с='chek'.$i;
$сc='ch'.$i;
if($_session($c))
и тэд. Пишу с мобилы извините

Спустя 19 часов, 50 минут, 38 секунд (24.11.2011 - 12:52) flashstream написал(а):
A.B.C., к сожалению твой вариант отказывается работать. Но зато я придумал такой способ:
for ($i=1; $i<=4; $i++)
{
if ($_SESSION[check.$i]==''){$_SESSION[ch.$i]="";} else {$_SESSION[ch.$i]="checked";}
}
Только теперь возник новый вопрос: как написать это же, но не запихивая переменные в массив сессионных переменных $_SESSION[] ?
Вариант if ($check.$i==''){$ch.$i="";} else {$ch.$i="checked";} неправильный.

Спустя 11 минут, 11 секунд (24.11.2011 - 13:03) GET написал(а):
flashstream

Тот же способ, что и мой

Спустя 1 час, 27 минут, 44 секунды (24.11.2011 - 14:31) hookman написал(а):
flashstream,


for ($i = 1; $i <= 4; $i++)
{
$expr_var = 'check' . $i;
$statement_var = 'ch' . $i;
if ($$expr_var == '') { $$statement_var = ""; }
else { $$statement_var = "checked"; }
}


Спустя 2 часа, 22 минуты, 22 секунды (24.11.2011 - 16:54) flashstream написал(а):
hookman, огромное спасибо! Твой способ - именно то, что надо. Задача полностью решена.
A.B.C., твоё решение тоже близко к истине, но условие if-else у тебя неправильное: $_SESSION[$c] надо было заменить на $$c.

Спустя 11 минут, 59 секунд (24.11.2011 - 17:06) killer8080 написал(а):
flashstream
это можно записать компактней
for($i = 1; $i <= 4; $i++){
${'ch'.$i} = !empty($_SESSION['check'.$i]) ? 'checked' : '';
}


UPD исправил имена переменных

Спустя 3 часа, 55 минут, 34 секунды (24.11.2011 - 21:01) hookman написал(а):
killer8080,
Отличный вариант :)
С Вашего позволения, тоже самое только без переменных из массива $_SESSION:

for ($i = 1; $i <= 4; $i++)
{
${'ch' . $i} = !empty(${'check'.$i}) ? 'checked' : '';
}

Спустя 8 часов, 58 минут, 4 секунды (25.11.2011 - 05:59) GET написал(а):
flashstream
Цитата
A.B.C., твоё решение тоже близко к истине, но условие if-else у тебя неправильное: $_SESSION[$c] надо было заменить на $$c.


//if ($_SESSION[check1]==''){$ch1="";} else {$ch1="checked";}

for ($i = 1; $i <= 4; $i++)
{
='chek'.$i;
$сc='ch'.$i;
if($_SESSION($c)==''){$cc='';}else{$cc="checked";}
}


;)

Спустя 1 час, 2 минуты, 19 секунд (25.11.2011 - 07:01) hookman написал(а):
Цитата (A.B.C. @ 25.11.2011 - 02:59)
flashstream
Цитата
A.B.C., твоё решение тоже близко к истине, но условие if-else у тебя неправильное: $_SESSION[$c] надо было заменить на $$c.


//if ($_SESSION[check1]==''){$ch1="";} else {$ch1="checked";}

for ($i = 1; $i <= 4; $i++)
{
='chek'.$i;
$сc='ch'.$i;
if($_SESSION($c)==''){$cc='';}else{$cc="checked";}
}


;)

По-моему это не будет работать.
Во-первых, чтобы выбрать значение из массива по ключу нужны квадратные скобки.
Во-вторых, ты присваиваешь переменным $c и $cc значения, потом в зависимости от условия оставляешь $cc пустым или присваиваешь значение "checked".
Задачу автора это не решает.

Спустя 47 минут, 37 секунд (25.11.2011 - 07:49) GET написал(а):
Цитата
По-моему это не будет работать.
Во-первых, чтобы выбрать значение из массива по ключу нужны квадратные скобки.
Во-вторых, ты присваиваешь переменным $c и $cc значения, потом в зависимости от условия оставляешь $cc пустым или присваиваешь значение "checked".
Задачу автора это не решает.


Вы правы я поторопился...первым постом

Цитата
сделайте цикл от 1 до 4.
Внутри
$с='chek'.$i;
$сc='ch'.$i;
if($_session($c))
и тэд. Пишу с мобилы извините


я показал метод, как это делать, но ...:)

вот я все проверил :)))))))))):

session_start();

error_reporting(E_ALL);

$_SESSION['chek1']='';
$_SESSION['chek2']='2';
$_SESSION['chek3']='3';
$_SESSION['chek4']='';

//if ($_SESSION[check1]==''){$ch1="";} else {$ch1="checked";}

for ($i = 1; $i <= 4; $i++)
{
$c='chek'.$i;
$cc='ch'.$i;

if($_SESSION[$c]=="")
{
$$cc='';
}
else
{
$$cc='checked';
}
echo $cc.'='.$$cc.'<br>';
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.