array opbouwen met meerdere foreach in elkaar
Jeroen G
06/12/2011 13:30:21Ik ben bezig met een stukje code waarmee ik een array samenstel vanuit de database. Nu heb ik een stukje code wat opzich prima functioneerd. Alleen het klopt niet voor mijn gevoel, volgens mij kan dit veel efficienter. Heeft er iemand suggesties/tips?
Alvast bedankt;
De data structuur;
> page
--> meta (array)
--> row
----> column
------> content (array)
--> row
----> column
------> content (array)
--> row
----> column
------> content (array)
etc, etc, etc
De php code;
Alvast bedankt;
De data structuur;
> page
--> meta (array)
--> row
----> column
------> content (array)
--> row
----> column
------> content (array)
--> row
----> column
------> content (array)
etc, etc, etc
De php code;
Code (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
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
<?php
$page = Page::find($id); // SELECT * FROM "pages" WHERE "id" = $id
$rows = Page::find($id)->rows()->get(); // SELECT * FROM "rows" WHERE "page_id" = $id
$result['meta'] = (array) $page;
foreach ($rows as $row_key => $row_value) {
$result['rows'][$row_key] = (array) $row_value;
$columns = Row::find($row_key)->columns()->get(); // SELECT * FROM "columns" WHERE "row_id" = $row_key
foreach ($columns as $column_key => $column_value) {
$result['rows'][$row_key]['columns'][] = (array) $column_value;
$contents = Column::find($column_key)->contents()->get(); // SELECT * FROM "contents" WHERE "column_id" = $column_key
foreach ($contents as $content_key => $content_value) {
$result['rows'][$row_key]['columns'][$row_key]['content'][] = (array) $content_value;
}
}
}
var_dump($result);
?>
$page = Page::find($id); // SELECT * FROM "pages" WHERE "id" = $id
$rows = Page::find($id)->rows()->get(); // SELECT * FROM "rows" WHERE "page_id" = $id
$result['meta'] = (array) $page;
foreach ($rows as $row_key => $row_value) {
$result['rows'][$row_key] = (array) $row_value;
$columns = Row::find($row_key)->columns()->get(); // SELECT * FROM "columns" WHERE "row_id" = $row_key
foreach ($columns as $column_key => $column_value) {
$result['rows'][$row_key]['columns'][] = (array) $column_value;
$contents = Column::find($column_key)->contents()->get(); // SELECT * FROM "contents" WHERE "column_id" = $column_key
foreach ($contents as $content_key => $content_value) {
$result['rows'][$row_key]['columns'][$row_key]['content'][] = (array) $content_value;
}
}
}
var_dump($result);
?>
Gewijzigd op 06/12/2011 13:42:45 door Jeroen G
Er zijn nog geen reacties op dit bericht.