Как создать серию наборов в PHP

-6

Мне нужна функция типа range, где я буду передавать значения min и max, она вернет заданную серию.

Например,

createSeries(0, 50, 10, ' - '); // (min, max, interval, connector)

Должен вернуть мне следующий массив

array('0 - 10', '10 - 20', '20 - 30', '30 - 40', '40 - 50');

Какое лучшее я могу выполнить?

EDIT: У меня есть функция, которая возвращает мне результат. Я использовал диапазон и для цикла, чтобы получить результат. Есть ли лучший способ, который я могу получить?

Заранее спасибо!

спросил(а) 2015-01-25T14:24:00+03:00 4 года, 10 месяцев назад
2
2 ответа
51

function createSeries($s, $e, $st, $d) {
$result = array();
for($i = $s; $i < $e; $i += $st)
$result[] = $i . $d . ($i + $st);

return $result;
}

ответил(а) 2015-01-25T14:45:00+03:00 4 года, 10 месяцев назад
47

Стильный функциональный код:

function createSeries($min, $max, $interval, $connector) {
return array_map(
function ($num) use ($interval, $connector) {
return implode(' ', array($num, $connector, $num + $interval));
},
range($min, $max - $interval, $interval)
);
}

Однако наиболее эффективным способом является:

function createSeries($min, $max, $interval, $connector) {
$series = array();
for ($i = $min; $i < $max; $i += $interval) {
$tail = $i + $interval;
$series[] = "$i $connector $tail";
}
return $series;
}

ПРИМЕЧАНИЕ. PHP очень медленный язык сценариев. Вы не должны возражать против эффективности.

ответил(а) 2015-01-25T14:36:00+03:00 4 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема