Дано: два массива. В первом 8 букв, во втором 8 цифр.
Задача: Вывести первые 4 буквы, затем вывести первые 4 цифры, затем вывести последние 4 буквы и в конце вывести последние 4 цифры.
Условие: Нельзя использовать никакие циклы, кроме foreach. Изменять массивы нельзя.
Т.е. на выходе должно быть: a b c d 1 2 3 4 e f g h 5 6 7 8
Я сделал так:
<?php
$letters = ['a','b','c','d','e','f','g','h'];
$numbers = ['1','2','3','4','5','6','7','8'];
$outside = 0;
$inside = 0;
foreach($letters as $letter)
{
if($outside < 4)
{
echo "$letter\n";
}
if($outside == 4)
{
foreach($numbers as $number)
{
if($inside < 4)
{
echo "$number\n";
}
$inside++;
}
$inside = 0;
}
if($outside > 3)
{
echo "$letter\n";
}
if($outside == 7)
{
foreach($numbers as $number)
{
if($inside > 3)
{
echo "$number\n";
}
$inside++;
}
}
$outside++;
}
Но мне кажется, что этот код выглядит как гумно и можно изящней. Подскажите нормальное решение пожалуйста, сделайте код-ревью мне.
<?php
$letters = ['a','b','c','d','e','f','g','h'];
$numbers = ['1','2','3','4','5','6','7','8'];
echo implode ('', [
implode ('', array_slice ($letters, 0, 4)),
implode ('', array_slice ($numbers, 0, 4)),
implode ('', array_slice ($letters, 4)),
implode ('', array_slice ($numbers, 4))
]);
$letters = ['a','b','c','d','e','f','g','h'];
$numbers = ['1','2','3','4','5','6','7','8'];
$x=array_chunk(array_merge($letters,$numbers),4);
echo implode('',array_merge($x[0],$x[2],$x[1],$x[3]));
и слегка модифицированный вариант @leninel
$x=array_merge(array_splice($letters,0,4),array_splice($numbers,0,4),$letters,$numbers);
echo implode ('', $x);
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Чем обусловлена невозможность писать указатель на метод в скобках? Почему запись указателя на метод должна быть именно
Решаю задачку, не понимаю как сделать замену только в первой половине строки