|
|
|
| Есть многомерный массив. Например в массиве есть элементы с именем news_cat.
Мне нужно сгрупиировать массив по данному элементу. Типо как реализовано в SQL - GROUP BY.
В php нашел функции array_filter,array_unique но они не применительны к многомерным массивам. | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 05:41)
| | Имя, это значит ключ, а в пределах одномерного массива одинаковых ключей быть не может. О чем речь идет? | |
|
|
|
|
|
|
|
для: sim5
(13.07.2010 в 07:33)
| | речь идет о многомерном массиве. Будьте, пожалуйста повнимательнее! | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 11:33)
| | Даже так? И что вы хотите из многомерного массива и какого? О внимательности можно говорить только тогда, когда вы нарисуете свой массив, и объясните чего хотите. GROUP возвратит уникальные значения, а вы говорите о имени, и что тогда имя в вашем понимании? | |
|
|
|
|
|
|
|
для: sim5
(13.07.2010 в 11:39)
| | Допустим, нужно сгруппировать по category_id.
Array
(
[0] => Array
(
[0] => 21
[id] => 21
[1] => 3
[category_id] => 3
[2] => Текст текст текст
[description] => текст...........
[3] => 2009-11-20
[data] => 2009-11-20
[4] => тоже текст
[name_cat] => и тут текст
)
[0] => Array
(
[0] => 22
[id] => 2
[1] => 3
[category_id] => 3
[2] => Текст текст текст
[description] => текст...........
[3] => 2009-11-20
[data] => 2009-11-20
[4] => тоже текст
[name_cat] => и тут текст
)
)
|
| |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 11:56)
| | И что значит сгруппировать по вашему мнению в отношении этого массива? | |
|
|
|
|
|
|
|
для: sim5
(13.07.2010 в 12:24)
| | Тоже самое что и GROUP BY. | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 12:27)
| | Тогда выполняйте это прямо в запросе и не морочте голову. | |
|
|
|
|
|
|
|
для: sim5
(13.07.2010 в 12:33)
| | решили не заморачиваться? ))) Зачем тогда в дискуссию вступили))) | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 12:41)
| | А потому, что вы взяли этот массив из запроса, причем используя mysql_fetch_array, который совсем не к месту. А коли это запрос, и нужное можно получить в нем, то зачем делать лишние телодвижения? | |
|
|
|
|
|
|
|
для: sim5
(13.07.2010 в 12:51)
| | Спасибо,про fetch_array. Я использую класс из софтайм фреймворка, а там в постраничной навигации именно fetch_array.Уже исправил.
Я не могу это сделать в запросе, потому что нарушится логика. мне нужно подсчитать кол-во выводимых записей, а мой запрос использует join на вытаскивание подразделов,что, собственно, увеличивает кол-во выводимых запись. | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 13:11)
| | Я так понимаю, что группировку по category_id вы понимаете исключительно как вывод полученных записей под этой категорией? А если так, то ваши потуги насчет array_unique излишни, так как для вывода совсем не надо преобразовывать полученный массив, для этого достаточно отсортировать запрос по category_id, а вывод уже будет автоматом. | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 05:41)
| | >Есть многомерный массив.
нету. | |
|
|
|
|
|
|
|
для: garold
(13.07.2010 в 05:41)
| |
<?php
$arr =
array (
0 =>
array (
0 => 21,
'id' => 21,
1 => 3,
'category_id' => 3,
2 => 'Текст текст текст',
'description' => 'текст...........',
3 => '2009-11-20',
'data' => '2009-11-20',
4 => 'тоже текст',
'name_cat' => 'и тут текст',
),
1 =>
array (
0 => 22,
'id' => 2,
1 => 3,
'category_id' => 3,
2 => 'Текст текст текст',
'description' => 'текст...........',
3 => '2009-11-20',
'data' => '2009-11-20',
4 => 'тоже текст',
'name_cat' => 'и тут текст',
),
);
$grouped = array();
$groupBy = 'category_id';
foreach($arr as $v)
{
$key = $v[$groupBy];
if(!array_key_exists($key, $grouped))
$grouped[$key] = array($v);
else
$grouped[$key][] = $v;
}
|
| |
|
|
|
|
|
|
|
для: sms-send
(13.07.2010 в 12:58)
| | О Спасибо! | |
|
|
|