@ssvv96

Как заменить array_map на функцию?

Всем привет. Какой функцией можно заменить данный код? заранее спасибо за подсказку
$new_menu = array_map(function($item){
    if (mb_strlen($item['title']) > 15) {
        $item['title'] = mb_substr($item['title'], 0, 12) . '…';
    }
    return $item;
}, $menu);
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Сделать функцию — означает сделать функцию, которую бы вы вызвали. В данном случае нет функции, которую бы вы вызвали :)

Буквально от вас хотели это:
<?php

function cutMenuTitle(array $elements, string $elementKey = 'item', int $limit = 15) {
     return array_map(function($item) use ($elementKey, $limit) {
        if (!isset($item[$elementKey])) {
              return NULL;
        }

        if (mb_strlen($item[$elementKey]) > $limit) {
            return mb_substr($item[$elementKey], 0, $limit - 3) . '…';
        }

        return $item[$elementKey];
    }, $elements);
}

$menu = [
    ['item' => 'Заголовок1 длинный'],
    ['item' => 'Заголовок2'],
];

var_dump(cutMenuTitle($menu, 'item', 13));
// [
//      "Заголовок1…",
//      "Заголовок2",
// ]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ar2rsoft
PHP-developer
array_map это и есть функция, можно заменить на цикл foreach, например
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы