Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сокращение конструкции switch

Сообщения:  [1-10]   [11-12] 

 
 автор: Trianon   (13.04.2007 в 19:01)   письмо автору
 
   для: SnooPI   (13.04.2007 в 18:53)
 

Ну вот если переделать его на

$cmdfilter = array(); 
foreach($commands as $f) 
{
  list($c, $f) = explode(' ', trim($f)); 
  $cmd_filter[$c] = $f;
}

то код отправки становится таким:

$filter = @$cmdfilt[strtolower($msg['message'])]; 
if($filter !== null) 
    $icq->sendMessage($msg['from'],  
        file_get_contents($filer)."\r\n$razd\r\n".$reklama[array_rand($reklama)]); 

   
 
 автор: SnooPI   (13.04.2007 в 18:53)   письмо автору
 
   для: Trianon   (13.04.2007 в 17:24)
 

$command = array();
$filer = array();

foreach($commands as $f)
list($command[], $filer[]) = explode(' ', trim($f));


Вот =)

   
 
 автор: Trianon   (13.04.2007 в 17:24)   письмо автору
 
   для: SnooPI   (13.04.2007 в 16:22)
 

А как задается массивы $command и $filter?

   
 
 автор: SnooPI   (13.04.2007 в 16:22)   письмо автору
 
   для: Trianon   (13.04.2007 в 16:18)
 

Вот =)

switch (strtolower($msg['message'])) {
            case $command[0]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[0])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[1]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[1])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[2]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[2])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[3]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[3])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[4]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[4])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[5]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[5])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[6]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[6])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[7]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[7])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[8]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[8])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[9]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[9])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
              case $command[10]:
                  $icq->sendMessage($msg['from'], file_get_contents($filer[10])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);
                  break;
}

   
 
 автор: Trianon   (13.04.2007 в 16:18)   письмо автору
 
   для: SnooPI   (13.04.2007 в 15:59)
 

Нет команды case. case это метка внутри оператора switch. Который Вы так и не показали, хотя Вас об этом спрашивали.

Одни и те же действия можно сделать, используя разные инструменты языка.
Вчастности последовательный поиск по массиву с помощью оператора switch (а вовсе не команда case) ,более естественно выполняется вызовом функции array_search().

   
 
 автор: SnooPI   (13.04.2007 в 15:59)   письмо автору
 
   для: Trianon   (12.04.2007 в 20:02)
 

Да дело не в рекламе :)
Просто на каждую команду, кв конце 1 строчка рекламы....

А по теме:
Не понимаю, куда вы запрятали команду case если она тоже должна быть??
Вообще я фореач недавно выучилд...объясните поподробнее

   
 
 автор: Trianon   (13.04.2007 в 09:53)   письмо автору
 
   для: localGhost   (13.04.2007 в 04:06)
 

Верно. А еще лучше - вывернуть наизнанку массив $command, проиндексировав его командами.

   
 
 автор: localGhost   (13.04.2007 в 04:06)   письмо автору
 
   для: Trianon   (12.04.2007 в 19:39)
 

Напишите что у вас в операторе указано: switch (???) ?

могу предложить такой вариант:

<?
$key 
array_search ($search$command);
if (
$key !== false) {
   
$file file_get_contents($files[$key]);
   
$icq -> sendMessage ($msg["from"], $file."\r\n".$razd."\r\n".$reklama[array_rand($reklama)];
}
?>

   
 
 автор: Trianon   (12.04.2007 в 20:02)   письмо автору
 
   для: ddhvvn   (12.04.2007 в 19:46)
 

Можно было бы набросать что-то вроде

foreach($command as $key => $val)
  if($xxx == $val) 
    $icq->sendMessage($msg['from'], 
        file_get_contents($filer[$key])."\r\n$razd\r\n".$reklama[array_rand($reklama)]); 

если бы знать, откуда взять $xxx (параметр switch())

> $icq->sendMessage($msg['from'], file_get_contents($filer[$command[0]])."\r\n".$razd."\r\n".$reklama[array_rand($reklama)]);

Ваш же код, как минимум, путает ключи и значения массива $command


----PS
Ценность скрипта сомнительна в высшей степени. Не поверю, что кто-то согласится терпеть мессенджер, столь навязчиво сующий рекламу, в то время, когда свободных средств коммуникации - пруд пруди.

   
 
 автор: ddhvvn   (12.04.2007 в 19:46)   письмо автору
 
   для: SnooPI   (12.04.2007 в 19:35)
 

-

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования