- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть двумерный массив из 317 подмассивов. В этих подмассивах последовательность нулей и единиц (могут быть одни нули, а могут и содержать некоторые кол-во едениц).
Задача собрать новый двумерный массив по следующей логике:
Начать в цикле добавлять подмассивы в новый массив, если подряд идут только с нулями, то склеиваем их один, пока не попадется подмассив с единицей.
Их мы тоже начинаем склеивать вместе. И т.д.
Т.е. было так
Уже несколько часов мучаюсь не могу придумать как сие организовать.
По идее нужно как-то так
Но так и не домучал, array_merge + array_push кручу верчу по разному, не получается...
Dram :
Уже несколько часов мучаюсь не могу придумать как сие организовать.
перебор старого массива
для первого вхождения задать базовый вход, временную контрольную переменную равную 1 или 0, определив if (in_array) единицу или ее отсутствие, после добавив к новому массиву этот первый подмассив
затем, при проходе дальше по старому массиву проверяешь также, 1 или 0, есть или нет в подмассиве
если совпадает с уже текущим значением проверки, то merge с последним элементом нового массива
если же не совпадает, переназначить текущую переменную проверки и добавить новый элемент нового массива
проверил, нет единиц, поставил переменную ноль, добавил в новый
проверил следующий, нет единиц - склеил с последним добавленным в новом
проверил следующий, есть единица - сменил переменную контроля и добавил как новый элемент
foreach oldarray
if in_array(1,subarr) { tmp=1} else { tmp=0 }
if tmp!=prevtmp {
newarr[] = subarr; prevtmp = tmp }
else {
array_merge subarr+last elem newarr }
Спасибо, переписал так
В итоге получил массив и 317 подмассивов. Или я ошибся или логика неверная.
array_merge ($tempArr[$i],$newArr[count($newArr)-1])
Спасибо, переписал так
В итоге получил массив и 317 подмассивов. Или я ошибся или логика неверная.
Вообще все по-другому написал, потому у тебя получилось сколько на входе, столько и на выходе, чего не должно быть при слиянии одинаковых нулей и единиц. Количество массивов на выходе должно стать меньше. По твоему коду будет совсем не то.
Вон выше дали еще пример, только я задачу понял немного иначе. В моем случае будут массивы схлопнутые по нулям и единицам, а в примере выше будет всего 2 массива, содержащий нули и содержащий единицы.
Судя по его варианту, как должно быть:
ваш вариант не подойдет, ибо он соберет все только в 2 массива, а ему нужно свести только пограничные.
ваш вариант не подойдет
А ну да, ну да. Был невнимателен. Прошу понять и простить
А ну да, ну да. Был невнимателен. Прошу понять и простить
Спасибо за помощь - все равно не то.
Вот начало полученного массива, он трехуровневый
Каждый подмассив 3-го уровня длинной 50 (как и у исходного). + непонятно растущий первый элемент каждого подмассива (зачеркнул), он увеличивается
А нужен массив 2-х уровневый который по идее (в результате склейки) будет иметь подмассивы разной длинны.
Может ошибся где?
вот это не понял
какой индекс - это же переменная, не массив?
Уже несколько часов мучаюсь
мало!
приходи с вопросом после 2х недель.....
[не шучу.]
думаю что дней через 3-5 помощь нужна уже не будет.
какой индекс - это же переменная, не массив?
$tmp = 0;
У меня такого нет. А, не с начала вставил😞
$tmp = [1, $i];
Если есть 1 то первый элемент 1, если нет, то 0. Расти ничего не должно, т.к.
$new_a[0][$i] = $tempArr[$i];
просто добавляется элемент исходного массива.
Но, все равно задачу не верно понял. Между делом, одним глазом. И 2 косяка с пониманием задачи. Надо в санаторий😅