Можно ли оптимизировать приведенный код

123
gormarket
На сайте с 29.12.2010
Offline
47
#11

можно еще избавиться от присвоения в строке

foreach ($e as $a) {

таким образом

while (sizeof($e)){

print(join('/', $e)."/<br>");

array_pop($e);

}

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
SM
На сайте с 25.07.2009
Offline
38
#12

Так, походу мне не спать )))

gormarket, И вам спасибо, сейчас проверим

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#13

а так? имхо, логчно, если надо уменьшать кол-во элементов, юзать array_pop, вообще без подсчета элементов

$folder = 'news/catalog/my/';

$out = explode('/', '/'.$folder );

while(array_pop($out) || count($out)>0){

echo join('/',$out).'/<br />';

}

p.s. если делать так while(array_pop($out)){ , без каунта - спотыкается на пустых элементаз массива

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#14
LinnTroll:
Ок, уговорили.

Только обьясните чем sizeof быстрее count
http://php.net/manual/ru/function.sizeof.php

Есть некоторая мелочь там т.к. sizeof это оригинал, а count уже псевдоним, и там выигрышный в мелочах, но мне как-то стало удобнее sizeof использовать и остальное бла-бла-бла и т.п.

Короче как и писал ждём-с чудес от 5.4, которые по новостям УЖЕ скоро выйдет и работы по нему по сути завершены.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
SM
На сайте с 25.07.2009
Offline
38
#15

Zlo_606ep, На обсчет элементов в условии циклов уже указали и это верно, при каждом проходе мы пересчитываем все то что можно было пересчитать заранее. (спасибо LEOnidUKG)

Более идельного решения чем предложил LinnTroll пока нет. Решение gormarket пока не проверил.

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#16
SwordsMan:
Zlo_606ep, На обсчет элементов в условии циклов уже указали и это верно, при каждом проходе мы пересчитываем все то что можно было пересчитать заранее. (спасибо LEOnidUKG)

Более идельного решения чем предложил LinnTroll пока нет. Решение gormarket пока не проверил.

array_pop - уменьшает кол-во элементов, подсчет тут каждый раз новое возращает значение, можно его как-то еще оптимизировать, но array_pop тут само-то

SM
На сайте с 25.07.2009
Offline
38
#17

Zlo_606ep, посмотрю, но завтра, ок?

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#18
SwordsMan:
Zlo_606ep, посмотрю, но завтра, ок?

ок ) там, собственно подсчет и не нужен, просто без него while на пустой элемент реагирует как на false, забороть можно еще чем-нибудь простым, вот, например, без подсчета:

while(array_pop($out) || $out!=array())

вообще метод один в один как gormarket предложил, просто array_pop можно сразу в while вставить

Dreammaker
На сайте с 20.04.2006
Offline
569
#19
SwordsMan:
чую что что-то не так

ваш выглядит кривовато и как-то с головы на ногу поставленным, но в рамках поставленной задачи он работает и хорошо. Экономия на спичках выходит, если его оптимизировать.

А вот что в данном случае нужно оптимизировать, так это ваше время затраченное на попытку решить такую задачу. А ведь через пару недель вы даже не вспомните что занимались её решением :)

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#20

и еще немного в защиту первого метода с count в условии цикла

вариант

while(array_pop($out) || (count($out)>0)

очень даже имеет право на жизнь, так как оператор "или" при истинной левой части не проверяет правую, то есть подсчет сработает только в случае false или пустом элементе слева, в чем можно убедиться так:

while(array_pop($out) || (count($out)>0 && print(count($out)))){

подсчитает 1 раз

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий