[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: последовательность данных
0414
Добрый день. Нужна помощь.
Есть данные которые берутся из БД, такие как, w1,w2,w3,w5,w6.
Как сделать чтобы последовательность w1,w2,w3 заменилась интервалом w1-w3, а остальные данные выводились как прежде?
например, было w1,w2,w3,w5,w6,
а стало w1-w3,w5,w6.

заранее спасибо
T1grOK
Через цикл проверять когда прервалась последовательность. Общий алгоритм примерно такой.
$arr = array(1, 2, 3, 5, 6);
$groups = array();
$group = 0;

foreach($arr as $key => $value){
if($key != 0 && $arr[$key - 1] == $value - 1){
$groups[$group][] = $value;
continue;
}
$groups[$group++][] = $value;
}

// А дальше разбираем группы последовательностей($groups)


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
0414
Спасибо, буду пробовать
0414
Все равно не очень понятно что нужно дальше делать с $groups?
Valick
0414, накпиши как именно происходит выборка из БД и покажи запрос


_____________
Стимулятор ~yoomoney - 41001303250491
0414
function ObjectName($ObjId)
{
$ObjN=0;
$query="select objectname from $TableObjectName where idobjectname='$ObjId'";
$result=mysql_db_query($dbname,$query,$db);
if(mysql_num_rows($result))
{
$ObjN=mysql_result($result,'objectname');
}
return $ObjN;
}
exotica
"select objectname from $TableObjectName where idobjectname='$ObjId'"

А разве это вообще реально? Гдето читал что в СКЛ запрос нельзя подставлять имя таблицы в виде переменной :o

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
TranceIT
exotica
Почему же? Запрос это обычная строка.
SQL не имеет никакого представления о том, как был сформирован запрос.

Другой вопрос что это не секурно. Можно подставить в запрос служебные таблицы и получить очень много инфы. Вплоть до логинов и паролей администраторов БД.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
SoMeOnE
Цитата (exotica @ 14.08.2013 - 09:06)
А разве это вообще реально? Гдето читал что в СКЛ запрос нельзя подставлять имя таблицы в виде переменной ohmy.gif

Да в моделях вообще иногда объявляют имя таблицы изначально и везде используют.
Так если нужно поменять имя таблицы, меняем тольок значение переменной, а не во всех запросах)
Michael
$x = 'w8,w1,w2,w3,w5,e1,w6,e2';
$arr = explode(',', $x);
sort($arr);
$arr2 = array();
foreach ($arr as $val) {
$l = $val[0];
$c = $val[1];
if (isset($arr2[$l][$c-1])) {
$val1 = $arr2[$l][$c-1]; $t = explode('-', $val1); $val1 = $t[0];
unset($arr2[$l][$c-1]);
$arr2[$l][$c] = $val1 . '-' . $l . $c;
} else {
$arr2[$l][$c] = $l . $c;
}
}

//var_dump($arr2);
$res = array();
foreach ($arr2 as $l=>$v) {
foreach ($v as $val) {
$res[] = $val;
}
}

print implode(',', $res); //Выведет: e1-e2,w1-w3,w5-w6,w8


p.s. Плюс в постановке задачи у тебя непоследовательность ("w1-w3,w5,w6" - тут w5 и w6 это тоже интервал)

_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

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