Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Работа с массивом / 10 сообщений из 10, страница 1 из 1
26.08.2013, 13:50
    #38377400
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
Здравствуйте, не могу придумать нормальное решение, есть многомерный массив, в котором несколько почти одинаковых массивов, у них разный только id или name вот дамп массива:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
array(4) {
  [0]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["name"]=>
    string(7) "тег1"
  }
  [1]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["name"]=>
    string(7) "тег2"
  }
  [2]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["name"]=>
    string(7) "тег3"
  }
  [3]=>
  array(5) {
    ["id"]=>
    string(1) "2"
    ["title"]=>
    string(28) "Всё о интернете"
    ["text"]=>
    string(41) "Тут просто сама статья"
    ["date"]=>
    string(1) "0"
    ["name"]=>
    string(7) "тег4"
  }
}


Нужно превратить в нормальный вид, то есть где совпадает id, нужно как-то склеить все ["name"] и разделить через запятую Понимаю тут перебором, но нормального решение не могу пока найти
...
Рейтинг: 0 / 0
26.08.2013, 22:25
    #38377940
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
gtkuler,

Ну если долго не думать...)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
$result = array();
$curid = $arr[0]["id"];
$cnt = 0;

foreach ($arr as $k=>$v)
{
    
    if ($v["id"] == $curid && $k !=0)
    {
        $result[$cnt]["id"]=$v["id"];
        $result[$cnt]["title"]=$v["title"];
        $result[$cnt]["text"]=$v["text"];
        $result[$cnt]["date"]=$v["date"];
        $result[$cnt]["name"].=','.$v["name"];
    }
    else
    {
        $cnt++;
        $result[$cnt]["id"]=$v["id"];
        $result[$cnt]["title"]=$v["title"];
        $result[$cnt]["text"]=$v["text"];
        $result[$cnt]["date"]=$v["date"];
        $result[$cnt]["name"]=$v["name"];
        $curid=$v["id"];
    }    
}



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Результат:
Array
(
    [1] => Array
        (
            [id] => 1
            [title] => Интернет
            [text] => Текст текст текст
            [date] => 1371186330
            [name] => тег1,тег2,тег3
        )

    [2] => Array
        (
            [id] => 2
            [title] => Всё о интернете
            [text] => Тут просто сама статья
            [date] => 0
            [name] => тег4
        )

)
...
Рейтинг: 0 / 0
28.08.2013, 15:41
    #38380033
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
SharuPoNemnogu,

есть проблема, а если name пустой? то просто ,,,
делал проверку на !empty ничего не выходит, не подскажите ?
...
Рейтинг: 0 / 0
28.08.2013, 16:31
    #38380101
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
gtkuler,
Код: php
1.
$v["date"] != ""


?
...
Рейтинг: 0 / 0
28.08.2013, 16:33
    #38380104
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
name т.е. )
...
Рейтинг: 0 / 0
28.08.2013, 16:39
    #38380122
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
у меня и с !empty работает. Может там не пусто, а пробел какой, или еще что?
...
Рейтинг: 0 / 0
29.08.2013, 16:18
    #38381348
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
gtkuler,

!empty(trim($name))
...
Рейтинг: 0 / 0
29.08.2013, 19:03
    #38381622
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
artasgtkuler,

!empty(trim($name))
Пример не будет работать, т.к. empty() языковая конструкция.
...
Рейтинг: 0 / 0
29.08.2013, 19:43
    #38381654
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
автор5.5.0

empty() now supports expressions, rather than only variables.
...
Рейтинг: 0 / 0
29.08.2013, 22:00
    #38381726
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с массивом
Развели с этой empty() фигню, приводя переданную переменную неявными преобразованиями к чему-то совсем простому, вроде boolean. Лишней она кажется. ИМХО конечно.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Работа с массивом / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]