Задачка. Есть строка "1_2,2_5,1_4,6_3", необходимо разбить строку и найти одинаковые значения до нижнего подчеркивания (одинаковые значения 1_2 и 1_4), после этого необходимо сложить числа у одинаковых значений после нижнего подчеркивания (то есть сложить 2 и 4). После сложения мы должны получить из строки "1_2,2_5,1_4,6_3" строку "1_6,2_5,6_3". Получилось разбить строку на массив, как теперь сделать сложение? PHP: $top = "1_2,2_5,1_4,6_3"; $id = array(); $num = array(); foreach (explode(",", implode(",", $top)) as $key) { $key = explode("_", $key); $id[] = $key[0]; $num[] = $key[1]; }
эм... в топ - строка. имплод по запятой - ничего не изменит. эксплод результата имплода соответственно будет таким же как и просто эксплод для исходной строки. зачем там имплод? PHP: $top = "1_2,2_5,1_4,6_3"; $tmp = []; foreach(explode(',', $top) as $mix) // дробим входную строку по запятым. получаем "миксы" { list($bank, $value) = explode('_', $mix); // дробим "микс" по ундерскору. получаем "банк" и "значение" if (!isset($tmp[$bank])) // если во временном массиве нет "банка" { $tmp[$bank] = 0; // задаем ему нулевое значение } $tmp[$bank] += $value; // прибавляем текущему значению "банка" значение текущего "микса" } array_walk($tmp, function(&$value, $bank) { $value = $bank . '_' . $value; }); // собираем пары банк-значение по ундерскору. получаем массив "миксов" $out = implode(',', $tmp); // собираем "миксы" в строку через запятую // пьём виски. да, утром надо пить благородные напитки теперь скажи, @zhenia3003, ты разделом не ошибся ли?
Спасибо, работает. Только я закомментил 2 строку ($tmp = [] иначе Parse error: syntax error, unexpected. В этот раздел написал, чтобы получить оперативный ответ профессионалов
Естественно ты её закоментил .У тебя пхп версии старше чем говно мамонта. Про то что квадратные скобки существуют уже несколько лет - ты не в курсе, поэтому тебе куда проще спрятать объявление массива и потом получать нотисы за попытку использования необъявленной переменной. Норм чо. Ммм... сколько денег задонатишь за моё время?
Только вот темы в этом разделе подразумевают более высокую квалификацию вопроса. Перенесено в php для новичков. На будущее - разделы нужны для логического разделения форума. Частота просмотра у них одинаковая, потому что люди смотрят вкладку "новые посты", а не шерстят ветки. Впредь просьба помещать посты в разделы, которые им подходят на основании содержания постов, а не личных желаний.