Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Увеличить производительность скрипта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: написать по другому рабочий скрипт
chaynyk
Отправлено: 21 Апреля, 2009 - 11:06:16
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


Помог: 0 раз(а)




скрипт рабочий, но нужно написать его по другому, так что бы скрипт (функция alph(); ) выполнялся быстрей по времени и ел меньше ресурсов.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $value3="z";
  3. function alph($letter) {
  4. $alphabet=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
  5. for ($i=0; $i<count($alphabet); $i++) {
  6.      if ($letter==$alphabet[$i]) {
  7.      if ($i+1!==count($alphabet))   {$newname=$alphabet[$i+1]; }  else  {$newname=$alphabet[0].$alphabet[0];}
  8.      }
  9.      }
  10. return  $newname;
  11. }
  12. $ss=alph($value3);
  13. echo $ss;
  14.  ?>

суть скрипта такова, есть значение $value1.$value2.$value2, где $value3 значение происходит методом подстановки из функции alph() понятно типа: после "j" идет "k" и так по нарастающий. Массив $alphabet состоит только из алфавита другие символы не нужны. Значение $value2 один ко многим $value3.
Если кто имеет достаточно, знаний в PHP, что бы корректно модернизировать скрипт, буду благодарен.


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
Champion Супермодератор
Отправлено: 21 Апреля, 2009 - 11:12:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Думать лень, но что увидел.
chaynyk пишет:
for ($i=0; $i<count($alphabet); $i++)
Лучше заменить на
CODE (text):
скопировать код в буфер обмена
  1. $c = count($alphabet);
  2. for ($i = 0; $i < $c; $i++)
. Хотя, цикл небольшой. Особой разницы не заметишь.

Да и вообще, перебирать массив в цикле незачем. Есть функции in_array и array_search.
 
 Top
Stierus Супермодератор
Отправлено: 21 Апреля, 2009 - 11:29:38
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




PHP:
скопировать код в буфер обмена
  1. function alph($letter) {
  2.         $alphabet=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
  3.         $cnt = count($alphabet); //можно тупо прописать $cnt = 26;
  4.         /* 1-й вариант : */
  5.         $key = array_search($letter, $alphabet);
  6.         /* 2-й вариант */
  7.         $alphabet_keys=array("a"=>0,"b"=>1,"c"=>2,"d"=>3,"e"=>4,"f"=>5,"g"=>6,"h"=>7,"i"=>8,"j"=>9,"k"=>10,"l"=>11,"m"=>12,"n"=>13,"o"=>14,"p"=>15,"q"=>16,"r"=>17,"s"=>18,"t"=>19,"u"=>20,"v"=>21,"w"=>22,"x"=>23,"y"=>24,"z"=>25);
  8.         $key = $alphabet_keys[$letter];
  9.         /*  в разных ситуациях разные способы могут быть быстрее, посмотри, какой из них у вас будет работать быстрее (выбери один из) */
  10.         if($key == $cnt-1){
  11.                 return 'aa';
  12.         }
  13.         else{
  14.                 return $alphabet[$key+1];
  15.         }
  16. }

Вроде бы, точная копия твоего скрипта. Зачем такое нужно - мне непонятно, функция не универсальна

(Отредактировано автором: 21 Апреля, 2009 - 11:34:27)

 
My status
 Top
Champion Супермодератор
Отправлено: 21 Апреля, 2009 - 11:35:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Еще объявление массива стоит вынести. И сделать его глобальным или передать по ссылке. А то при каждом вызове функции он заново создается
 
 Top
Stierus Супермодератор
Отправлено: 21 Апреля, 2009 - 11:53:15
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
А то при каждом вызове функции он заново создается
Акселераторы же следят за этим Улыбка
 
My status
 Top
valenok
Отправлено: 21 Апреля, 2009 - 18:03:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $aAlphabet = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",'aa');
  3. echo $aAlphabet[array_search('z', $aAlphabet)+1]);

(Отредактировано автором: 25 Апреля, 2009 - 00:54:46)



-----
Truly yours, Sasha.
 
My status
 Top
valenok
Отправлено: 22 Апреля, 2009 - 08:31:37
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




$aAlphabet = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",'aa');

echo $aAlphabet[array_search('z', $aAlphabet)+1]);


-----
Truly yours, Sasha.
 
My status
 Top
chaynyk
Отправлено: 24 Апреля, 2009 - 21:00:59
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


Помог: 0 раз(а)




valenok пишет:
$aAlphabet = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",'aa');

echo $aAlphabet[array_search('z', $aAlphabet)+1];

Спасибо!
Что-то как-то не пришло в голову добавить 'aa'. Скрипт работает, в три раза быстрей, в отличии от первоначальной версии.


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB