Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Преобразовать интервал в числовой массив


Автор: JackyFox 17.6.2011, 12:12
Привет!

Подскажите, пожалуйста, существуют ли штатные средства в языке, при помощи которых можно строку вида «571-576» преобразовать в массив, содержащий все числа из указанного интервала (571, 572, 573, 574, 575, 576)? Или же самостоятельно, ручками разбирать, анализировать? Скиллы в PHP пока слабые, поэтому и в ручном преобразовании не откажусь от помощи или совета.

Разрабатываю веб-приложение на Yii для корпоративных нужд. В нем в основном идет учёт некой продукции, по большей части однотипной, выпускаемой небольшими партиями. Обычно в пределах партии отличаются эти изделия только по серийному номеру. И вот, чтобы не вводить для каждого девайса одинаковые параметры (там много разных раскрывающихся списков и чекбоксов), хотелось бы сделать возможность задавать интервал серийных номеров. А потом уже в контроллере добавлять в базу сразу пачку записей.

Автор: MoLeX 17.6.2011, 12:17
Код

$str = "571-576";
$array = explode("-", $str);
$min = (int)$array[0];
$max = (int)$array[1];
$my_array = array();
for( $i = $min; $i<=$max; $i++ )
  $my_array[] = $i;

var_dump($my_array);


не красивый, но рабочий способ

Автор: Shogun 17.6.2011, 12:53
Код

$str = '571-576';
list($from, $to) = explode('-', $str);
$from = (int)$from;
$to = (int)$to;

$array = range($from, $to-$from, 1);


http://php.net/manual/en/function.range.php

Автор: MoLeX 17.6.2011, 13:22
мм, range. не знал о таком

Автор: JackyFox 21.6.2011, 11:56
Всем спасибо! 
Shogun, воспользуюсь вашей реализацией.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)