[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощь в создании скрипта
Страницы: 1, 2
Игорь_Vasinsky
умываю руки laugh.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
NeonDT
Плохое ТЗ - результата ХЗ)))) Честно говоря до сих пор не пойму чего в итого то добивается.
Игорь_Vasinsky
забрать диапазоны по каким-то критериям.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
volter9
Если правильно понял ТЗ, то тогда должно получится как то так:
/**
* Parse range
*
*
@param string $start
*
@param string $end
*
@return array
*/

function parse_range ($start, $end) {
if ($start >= $end) {
return [];
}

$edges = ['', ''];

$start = str_split(strrev($start));
$end = str_split(strrev($end));

foreach ($end as $key => $value) {
if ($start[$key] === '0' && $value === '9') {
continue;
}

$edges[0] = $start[$key] . $edges[0];
$edges[1] = $value . $edges[1];
}

return $edges;
}

/**
* Generate one range
*
*
@param array $range
*
@return array
*/

function generate_range (array $range) {
list($start, $end) = $range;

if ($start === $end) {
return [(int)$start];
}

$range = [];

$start = str_split($start);
$end = str_split($end);

$prefix = 0;

while (true) {
if (empty($end)) {
break;
}

$start_first = array_shift($start);
$end_first = array_shift($end);

if ($start_first === $end_first) {
$prefix .= $start_first;
}
else {
$range = array_merge($range, range(
$prefix . $start_first,
$prefix . $end_first
));

$prefix .= $end_first;
}
}


return $range;
}

/**
* Generate ranges
*
*
@param array $ranges
*
@return array
*/

function generate_ranges (array $ranges) {
$result = [];

foreach ($ranges as $value) {
$range = explode('-', $value);

$parsed = parse_range(
current($range),
end($range)
);


$result = array_merge($result, generate_range($parsed));
}

return $result;
}

$ranges = [
'135000-135049',

'1950000-1959999',
'1960000-1969999',
'2170000-2187999'
];

var_dump(generate_ranges($ranges));

И результат:
array (size=18)
0 => int 13500
1 => int 13500
2 => int 13501
3 => int 13502
4 => int 13503
5 => int 13504
6 => int 195
7 => int 196
8 => int 217
9 => int 218
10 => int 2180
11 => int 2181
12 => int 2182
13 => int 2183
14 => int 2184
15 => int 2185
16 => int 2186
17 => int 2187


_____________
Мой блог
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.