За последние 24 часа нас посетили 16854 программиста и 1641 робот. Сейчас ищет 941 программист ...

Как упростить запись

Тема в разделе "PHP для новичков", создана пользователем mainet, 12 янв 2013.

  1. mainet

    mainet Активный пользователь

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    Как упростить запись ?

    Код (Text):
    1.  
    2.             if ($yaru == 'no')      { $yaru="";}
    3.             if ($vkontakte == 'no') { $vkontakte="";}
    4.             if ($facebook == 'no') { $vkontakte="";}
    и т.д.
     
  2. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Код (PHP):
    1. $no=function(&$v){$v=($v!="no")?$v:'';};
    2.  
    3. $no($yaru);
    4. $no($kontakte);
    5. $no($facebook);
    Добавлено спустя 1 минуту 18 секунд:
    Должно работать
     
  3. mainet

    mainet Активный пользователь

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    не работает :(
    Может можно как то через массив? А то получается это не оптимизация. Количество строчек только увеличилось.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык у вас не массив
     
  5. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    А у меня работает. Тут дело в кавычках).
    Код (PHP):
    1. $no=function(&$v){$v=($v!="no")?$v:'';};
    2.  
    3. $yaru="no";
    4. $vkontakte='no';
    5. $facebook='yeah!';
    6.  
    7. $no($yaru);
    8. $no($kontakte);
    9. $no($facebook);
    результат--
    пусто
    no
    yeah

    ща...

    Добавлено спустя 2 минуты 46 секунд:
    Код (PHP):
    1. $no=function(&$v){$v=($v==="no")?'':$v;};
    Добавлено спустя 1 минуту 28 секунд:Тащемта оптимизация не только в количестве строчек, ну еще и в скорости%)

    Добавлено спустя 19 минут 33 секунды:
    3.150091 секунд --$no=function(&$v){$v=($v==="no")?'':$v;};
    3.007162 секунд --$no=function(&$v){if($v==="no"){$v='';}};
    2.412675 секунд --function no(&$v){if($v==="no"){$v='';}};
    0.133725 секунд --твой код с if

    на 100000 выполнений
    Вот так-вот). В моем первом варианте потеря в производительности из-за логической конструкции этой хз как она называется), там идет в любом случае присвоение изначальной переменной, во втором варианте побыстрее, но он медленнее, чем третий, видимо в пыхе есть разница между функцией-переменной и просто функцией), ну а третий вариант самый быстрый тк там не тратится время на вызов функции и передачи ей инфы(если бы я не использовал указатель то мои функции были бы еще медленнее).

    Вывод--тебе не надо ничего оптимизировать)

    Добавлено спустя 1 минуту 25 секунд:
    Разве что для удобства заюзать функцию, предложенную мной). Если конечно она не выполняется тысячи раз в скрипте), но выполняется раз 50.
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    В случае, если переменных всего три - то переделывать тут нечего и незачем. Если их много и может в дальнейшем стать ещё больше - можно вместо переменных $yaru, $vkontakte и т.д. использовать одну переменную-массив, в котором элементы будут соответствовать этим всяким yaru, vkontakte и пр.
    Ну либо вот так можно ещё:
    Код (PHP):
    1. $varNames = array('yaru', 'vkontakte', 'facebook');
    2. foreach($varNames as $varName) {
    3.     if($$varName == 'no')
    4.         $$varName = '';
    5. } 
     
  7. mainet

    mainet Активный пользователь

    С нами с:
    31 май 2012
    Сообщения:
    77
    Симпатии:
    0
    Спасибо.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а почему для $facebook обнуляется переменная $vkontakte