Слияние ключей в массиве - PHP

129
21 апреля 2018, 17:56

Возможно ли в массиве ключи объединить, если в том или ином ключе идет содержание из одного или двух символов то объединился со следующим.

Массив такой

array ( 0 => 'В', 1 => 'городе', 2 => 'весна', );

А вот как сделать так понять никак не могу.

array ( 0 => 'В городе',  1=> 'весна', );
Answer 1

Например, как-нибудь так:

$a = array ( 0 => 'В', 1 => 'городе', 2 => 'весна', );
$tmp = null;
$b = array_reduce($a, function($res, $el) use (&$tmp) {
    if ($tmp) {$el = "$tmp $el"; $tmp = null;}
    if (strlen($el)<=2) $tmp = $el;
    else $res[] = $el;
    return $res;
}, array());
if ($tmp) {$b[] = $tmp;} // иначе можно потерять последний короткий элемент...
var_export($b); // array (0 => 'В городе', 1 => 'весна',)
Answer 2

Ещё вариант:

$input = ['И', 'в', 'городе', 'снова', 'весна', 'но'];
$output = [];
array_map(function($item)use(&$output){
    static $temp;
    if (mb_strlen($item) < 3) {
        $temp .= $item . ' ';
    } elseif (isset($temp)) {
        $output[] = $temp . $item;
        $temp = null;
    } else {
        $output[] = $item;
    }
}, $input);
var_dump($output);

Результат:

array (size=3)
  0 => string 'И в городе' (length=18)
  1 => string 'снова' (length=10)
  2 => string 'весна' (length=10)

Т.е., если последние элементы массива объединять не с чем, то они отбрасываются.

READ ALSO
Ошибка ERR_TOO_MANY_REDIRECTS

Ошибка ERR_TOO_MANY_REDIRECTS

Есть сайт — gizel-bakirovainfo При переходе выдает ошибку — ERR_TOO_MANY_REDIRECTS Сайт функционирует на MODx Evolution

168
Как настроить пагинацию в joomla

Как настроить пагинацию в joomla

Я пользуюсь стандартным шаблоном protostar , у меня на сайте 20 материаловя включил пагинацию в админке и материалы выводятся по 13 на страницу

145
Время вывод echo после отправки формы

Время вывод echo после отправки формы

Добрый день, вопрос такой, есть форма отправки сообщения, все работает, единственное смена сообщений с "форма отправки" до "Cообщение успешно...

140