Php помогите дописать функцию увеличения цифры (1,2,3)

1 234
S
На сайте с 30.09.2016
Offline
469
#31
Smirnof:
я исправил, это из другого кода в нотепад

О чём я и сказал

Если бы Вы так тщательно не запутывали информацию, вопрос можно было бы ещё утром решить
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 13.11.2012
Offline
72
#32

Если бы не Александр И, вопрос я бы не решил и завтра.

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

S
На сайте с 30.09.2016
Offline
469
#33
Smirnof:
Если бы не Александр И, вопрос я бы не решил и завтра

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

B
На сайте с 13.02.2008
Offline
262
#34

Я извиняюсь заранее, т.к. давно с пхп дела не имел, но не лучше ли вместо глобальной переменной использовать для счетчика статическую переменную? Тогда будет примерно так:


protected function listQuery($yt){
static $listQueryHit = 1;

if ($listQueryHit > 3)
$listQueryHit = 1;

return "<div class='div_topic_cover topic_cover_".($listQueryHit++)." reviews'>...код...</div>";
}

А, нет. Увидел выше, что метод из разных объектов вызывается, так что этот вариант наверно не пройдет.

S
На сайте с 30.09.2016
Offline
469
#35

На самом деле, ещё с утра silicoid предложил хороший вариант, без всяких глобалсов и переопределений переменных. Я просто попытаюсь подытожить этот вариант:

protected function listQuery($yt, $num){

return '<div class="div_topic_cover topic_cover_'.$num.' reviews">...код...</div>';
}

protected function getimgkat($nom){
$this->url = "api запрос";
$data = $this->http(TRUE);
$i=1;
foreach ($data->items as $yt) {
$html .= $this->listQuery($yt,$i);
$i++;
}
return $html;
}
Ну с поправками на точность воспроизведения оригинальных функций, естественно (типа, куда девается $nom или откуда берётся $html :)).
B
На сайте с 13.02.2008
Offline
262
#36

А по хорошему счету вообще не правильно так делать, как у ТС. Это надо делать в шаблоне. Я бы сделал так:


{% for yt in data.items %}
<div class="div_topic_cover topic_cover_{% cycle '1' '2' '3' %} reviews">...код...</div>
{% endfor %}

И это всё. Просто и понятно.

S
На сайте с 13.10.2014
Offline
171
#37

Sitealert, Ну вот я и написал, что если делать задачу в лоб, начнется говнокод.

решить можно как Вы написали, только в protected function listQuery($yt, $num)

надо задать значение $num =1 по-умолчанию ## listQuery($yt, $num=1) ##, так как вызов функции может происходить не из одного места, а не известно из скольки...

а везде всё не исправишь, да часто это и не надо

S
На сайте с 30.09.2016
Offline
469
#38
silicoid:
Ну вот я и написал, что если делать задачу в лоб, начнется говнокод.

Главное, заказчик доволен 😂

danforth
На сайте с 18.12.2015
Offline
153
#39
Александр И:
Я просто скопировал код с первого сообщения.
Естественно, я так не пишу.

У меня не было возможности прислать рабочий вариант, сказал чтобы все время сэкономили.

Вопросы представления к представлению и относятся. Логику формирования счетчика нужно выносить в представление, если приложение по MVC/MVP/MVVM-паттерну построено. Решение со static наиболее оптимальное для ТС: скопировал, вставил, работает. В другие части кода его лучше не направлять, чтобы случайно не сломал ничего.

Junior Web Developer
1 234

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