микс Код (Text): $a = [1, 2, 3, 4, 5]; $b = ['a', 'b', 'c']; $c = []; foreach (array_chunk($a, count($b)) as $f) { $c[] = array_combine(array_slice($b, 0, count($f)), $f); }
а мне не нравится я вот еще более короткий вариант говнокода сделал Код (Text): $a = [1, 2, 3, 4, 5]; $b = ['a', 'b', 'c']; $c = []; while (count($a) && $c[] = array_combine(array_slice($b, 0, count($a)), array_splice($a, 0, count($b))));
решение подобных задач в одну строчку - это частный случай) В целом, тоже верное направление. Ничего тормозящего в этом варианте я не заметил. Для красоты, можно count($a) вынести из цикла ))
если уж стебаться, то PHP: $in = [1, 2, 3, 4, 5, 6, 7]; $k = ['a', 'b', 'c']; $o = []; $i=$j=0; foreach($in as $v) { $o[$i+=@!$k[$j]][$k[@!$k[$j]?0*($j=1):$j++]] = $v; }
Для понимания логики и как оно все работает, не скрывая "обвертками" ход работы над данными. Поэтому в моем посту отсутствует фразы по типу "самое оптимизированное ит.д.", а только лишь аргументированно/досканально показывает ход работы над данными. Мимо, другие проекты не относятся к данной ситуации или что - то подобного: Ты сумел управиться с помощью некой "обверткой", предоставляемым PHP. Я же и без них показал конкретизированный вариант. Вот это должно быть осознанно. --- Добавлено --- Код машина за вас прочтет, но ей будет больно от присутствия @
Код отвратителен, @runcore даже отдельно написал что это стёб, хотя и без того, я бы очень удивился, если бы опытный программист вроде него всерьез написал такое. Подобные издевательства над глазами и мозгом оправданы лишь в одном случае: миллионы итераций, тогда, хитрыми оптимизациями и опытным путем можно уменьшить время выполнения. В остальных случаях - оно того не стоит, потому что код прежде всего должен быть самодокументируемым.
Кому что, мне скорее такие 'профессионалы' регулярок: https://php.ru/forum/threads/konvertacija-soderzhimogo-div-v-obychnyj-tekst.75874/#post-595902 Но профессиональнее наверное обойтись без собачек: PHP: $in = [1, 2, 3, 4, 5, 6, 7]; $k = ['a', 'b', 'c']; $out = []; $c = $l = 0; foreach($in as $v){$out[$l][$k[count($k)==$c?0*($c=1)*($l++):$c++]] = $v;} print_r($out);
Да ну брось, какие штрафы? Просто тут звучала фраза "кто предложит еще короче вариант решения этой задачи?". Вот и появились извращенные варианты исполнения детской задачи. У кого есть еще стебные варианты решений?
PHP: <?php function createTrapeze($a) { $a = [1, 2, 3, 4, 5, 6]; $b = ['a', 'b', 'c']; $e = sizeof($b); //считаем foreach ($a as $d => $f) { $c[floor($d / $e)][$b[$d % $e]] = $f; // трапеция } return $c; } $k = createTrapeze($a); $result = array_map('squareTrapeze', $k); // для каждого куска применяем функцию function squareTrapeze($chunk) { $chunk = array_combine(['a', 'b', 'c'], $chunk); // устанавливаем ключи $chunk['s'] = ($chunk['a'] + $chunk['b']) * $chunk['c'] / 2; // считаем и записываем площадь квадратика return $chunk; }; echo '<pre>'; print_r($result); echo '<pre>'; Всем привет, вот что у меня получилось по заданию далее требуется Реализовать функцию getSizeForLimit($a, $b). $a – массив результата выполнения функции squareTrapeze(), $b – максимальная площадь. Результат ее выполнение: массив размеров трапеции с максимальной площадью, но меньше или равной $b. Вообще не пойму что от меня требуется, может кто сможет объяснить? Мне просто взять максимальную площадь или нужно написать формулу поиска максимального значения площади? Каким образом я должен вывести массив размеров трапеции с максимальной плащадью. Может у меня глаз уже замылился... хелп