Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Количество case в switch...


Автор: FLASHman 11.2.2005, 15:55
Доброе/ый утро/день/вечер!

У меня такая проблемка…мне нужно чтобы при каком-либо определенном условии количество case в switch было разным. Например, переменная $i==3 и мне нужно чтобы
было:
switch($variable){
case 1: $n++; break;
case 2: $n++; break;
case 3: $n++; break;
}
А если $i==5, то:
switch($variable){
case 1: $n++; break;
case 2: $n++; break;
case 3: $n++; break;
case 4: $n++; break;
case 5: $n++; break;
}
и т.д. Значение $i может быть разным, а количество case такое же какое и значение у $i. Допустим если $i=5 то и case должно быть тоже 5. Можно ли это сделать? И если можно, то как?

Автор: penizillin 11.2.2005, 16:08
тут лучше использовать if/else.

Автор: Akina 11.2.2005, 16:25
Лучше сделать массив условий и выполнять if в цикле по $i

Автор: Mal Hack 11.2.2005, 21:57
А можно задачу сказать в человеческой форме, просто у меня такое чувство, что ты замудрил слишком...

Автор: FLASHman 12.2.2005, 07:59
Я тоже что то посмотрел...сильно запутанный у меня получился вопрос. Просто не знаю как это сказать по проще. Ну вобщем попробую...у меня есть переменнная, допустим $i. Значением этой переменной может быть разное число. Мне нужно чтобы количество case в условии switch было равно значению этой переменной. Если $i=4, то case должно быть тоже четыре. Тоесть вот так:
switch($variable){
case 1: $i++; break;
case 2: $i++; break;
case 3: $i++; break;
case 4: $i++; break;
}
Я бы мог поставить их вручную, но значение переменной от меня не зависит, поэтому я не могу знать какое количество case надо.....че то я опять замудрил, но может кто-нибудь поймет.

Автор: BIG BROTHER 12.2.2005, 11:08
циклом выполнять условия в зависимости от $i

Автор: FLASHman 12.2.2005, 13:32
BIG BROTHER
Ну а как это можно сделать? smile
Как динамически удалять или создавать разное количество case?

Автор: Mal Hack 12.2.2005, 13:52
FLASHman
я просил назвать задачу, а не что ты пытаешься сделать... Это я и так понял...
А почему все в 1 case нельзя впихнуть? или значения $i пересекаются?

Автор: FLASHman 12.2.2005, 13:56
Mal Hack
А как впихнуть все в один case?
А задача у меня такая...поделить массив и выводить его значения по 5 на страницу. При том что я не знаю сколько элементов в массиве, а значит и сколько будет страниц.

Автор: Mal Hack 12.2.2005, 15:22
Цитата(FLASHman @ 12.2.2005, 13:56)
а значит и сколько будет страниц.

ceil( count($arr) / 5 );

Цитата(FLASHman @ 12.2.2005, 13:56)
поделить массив и выводить его значения по 5

Предположим, что страница передается так: ?p=1
Тогда:
Код

$start = ( $_GET['id'] - 1 ) * 5;

for(  $i = $start; $i < $start + 5; $i++  )
{
 print $arr[$i] = $arr[$i] / $delitel;
}

И никаких кейсов.

Автор: FLASHman 12.2.2005, 15:27
Mal Hack
Большое спасибо! Сейчас попробую.

Автор: InfMag 13.2.2005, 11:44
Могу предложить такой вариант:
Код

for ($m=1; $m<i+1; $m++) {
if ($variable==$m) {
 $i++;
 $_isset=1;
}
}

if (isset($_isset)) {
echo "Все прошло удачно...";
} else {
echo "#$variable не существует!";
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)