[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ограничить массив
santaros
Добрый день.
Имеется массив:

$result = mysql_query ("SELECT date FROM data ORDER by date DESC ") or die (mysql_error());
$row = mysql_fetch_assoc($result);

$json_date = array();
do{
array_push($json_date, $row['date']);
}
while($row = mysql_fetch_assoc($result));

$date = array_unique($json_date);
$date = array_values($date);
Можно как ни будь его ограничить, скажем до 14 элементов??
Спасибо.

P/S - Ограничить на уровне Mysql(Limit) не вариант.



Спустя 10 минут, 20 секунд (4.03.2011 - 14:19) two написал(а):
santaros
for($i = 0; $i < 14; $i++)
{
array_push($json_date, $row['date']);
}

Спустя 1 минута, 23 секунды (4.03.2011 - 14:21) twin написал(а):
Цитата
P/S - Ограничить на уровне Mysql(Limit) не вариант.
Почему?

Спустя 3 минуты, 2 секунды (4.03.2011 - 14:24) santaros написал(а):
Цитата (two @ 4.03.2011 - 11:19)
santaros
for($i = 0; $i < 14; $i++){    array_push($json_date, $row['date']);}

Не работает почему то.

twin
Дело в том что я после SQL запроса режу повторяющиеся строки..

array_unique
array_values

И получается что если существуют повторяющиеся строки то элементов становится меньше .

Спустя 9 минут, 14 секунд (4.03.2011 - 14:33) two написал(а):
santaros
Вот так правильно:
$result = mysql_query("SELECT `date` FROM `data` ORDER by `date` DESC") or die (mysql_error());

$json_date = array();

$i = 0;

while($row = mysql_fetch_assoc($result)){
$i++;
array_push($json_date, $row['date']);
if ($i >= 14)
break;
}

print_r($json_date);

Спустя 18 минут, 16 секунд (4.03.2011 - 14:51) santaros написал(а):
Цитата (two @ 4.03.2011 - 11:33)

santaros
Вот так правильно:
$result = mysql_query("SELECT `date` FROM `data` ORDER by `date` DESC") or die (mysql_error());

$json_date = array();

$i = 0;

while($row = mysql_fetch_assoc($result)){
    $i++;
    array_push($json_date, $row['date']);
if ($i >= 14)
    break;
}

print_r($json_date);


Работает. Но так как я делаю ещё и обрезку повторяющихся значений:

$json_date = array();

$i = 0;
while($row = mysql_fetch_assoc($result)){
array_push($json_date, $row['date']);
$i++;

$date = array_unique($json_date);
$date = array_values($date);

if ($i >= 14)
break;
}

лимит значений немного сбивается.... :(

Подскажите как ограничить массив с учётом array_unique и array_values

Спустя 9 минут, 55 секунд (4.03.2011 - 15:01) linker написал(а):
SELECT DISTINCT(`date`) FROM `data` ORDER BY `date` DESC LIMIT 14

Спустя 8 минут, 24 секунды (4.03.2011 - 15:09) santaros написал(а):
На уровне Mysql мне не нужно этого делать.

Потому что, это скрипт статистики новостного сайта.

Я делаю SQL запрос и вывожу значения из таблицы новостей, по полю даты. Затем делаю массив этих значений.

И делаю ещё один массив из того, сколько в эту дату было добавленно новостей.

Мне просто нужно обрезать повторяющиеся значения и затем уже лимитировать их....

Спустя 1 час, 24 минуты, 50 секунд (4.03.2011 - 16:34) Dron19 написал(а):

$json_date = array();
do{
array_push($json_date, $row['date']);
}
while($row = mysql_fetch_assoc($result));

$date = array_unique($json_date);

Чисто лишняя работа! Зачем копировать массив? Хотя бы уже удалил бы старый и очистил дескриптор.
А вместо array_unique, в запросе мог бы поставить DISTINCT
Быстрый ответ:

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