Dram

Рейтинг
1115
Регистрация
28.06.2008

ivan-lev, АЙ ДА ШАМАН - все отработало как нужно спс, попытаюсь теперь понять как оно работает :))) Спасибо!

Я в консоле смотрю не в браузере.

Я хотел сделать так.

1. Создать пустой массив.

2. Начать добавлять в него по одной записи из главного массива.

3. Начиная со второй итерации я хотел сравнивать значения ID из основного (старого массива) со всеми уже добавленными ID в новом массиве.

4. Если есть совпадения по ID - проверяем значение года.

5. Если в новом массиве значение года - 0, а в старом с таким же ID значение больше 0 - то заменяем массив на тот где год больше.

Вот вроде и все

---------- Добавлено 13.09.2019 в 08:57 ----------

ivan-lev, да получаю из базы запросом, но результат мне нужен в формате

ORDER BY `t3`.`value` DESC

Потратил пару часов и вынужден признаться что где-то с моей логикой проблемы :(

//создал пустой массив
$arrayFinal = array ();

foreach ($value2 as $item){
array_push($arrayFinal, $item); //добавил первую запись
$i=0;
if ($arrayFinal[$i]->id == $item->id){ //начинаю проверять ID в новом массиве и в старом
if ($arrayFinal[$i]->year < $item->year){ // если они одинаковые - проверяю год
unset($arrayFinal[$i]); //если в новом год меньше, т.е. ноль (там два варианта только возможно), то удаляю подмассив из нового
array_push($arrayFinal, $item); /// и вставляю с большим годом из старого
}
}
$i++;
var_dump($arrayFinal);

}

И в итоге этого говнокода получаю очень длинный цикл, сразу его прерываю ибо понимаю что где-то накосячил....

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

И еще вот интересно, можно ли налету присваивать ноль, типа set = 0, если год не 18 и не null. Но чтобы это не писалось в таблицу....

Magazinshik, спасибо, оч интересная ссылка! Значит единственный вариант - добавлять случайные шумы того же цвета что и цифры?

Да, вы правы - не туда посмотрел... запутался уже, куча файлов открыта... думаю дальше..

---------- Добавлено 12.09.2019 в 14:24 ----------

мде.. без вариантов - только вариант с говнокодом что я изначально и придумал


value = 0
year = 0

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

edogs, я понял почему не срабатывал как надо.

Во первых был мой мусор

value = 0
year = 0

когда его убрал ваш вариант работал но выбирал не все значения.

Оказывается в выборку не попадают фирмы если у них нет цен за 2018 год но есть за како-то другой.

Пытаюсь понять как их теперь добавить в запрос

---------- Добавлено 12.09.2019 в 13:24 ----------

Все нашел решение

(t3.year = '2018' or t3.year is null or t3.year != '2018')



---------- Добавлено 12.09.2019 в 13:24 ----------

edogs, спасибо!

edogs, это было первое что я попробовал, но дело в том что если в таблице t3 для фирмы нет цены - то там вообще нет записей для t3.item_id = t1.id

и or t3.year is null не работает вероятно потому что выше условие - LEFT JOIN price AS t3 ON t3.item_id = t1.id

---------- Добавлено 12.09.2019 в 13:05 ----------

edogs:
( в группе t1.id окажется несколько t3.value строк,

этого не случится - там же еще сортировка по году, а для 1 года всегда одна цена

Всего: 6928