Многомерный массив Foreach - отображение в разных таблицах - PullRequest
0 голосов
/ 28 сентября 2011

В настоящее время у меня есть следующий массив:

Array
(
    [group] => Array
        {
            [5] => group1-title
            [6] => group2-title
        }
    [treatment] => Array
        (
            [5] => Array
                (
                    [16] => Array
                        (
                            [title] => title1
                            [description] => description1
                            [price] => price1
                        )

                    [17] => Array
                        (
                            [title] => title2
                            [description] => description2
                            [price] => price2
                        )
            [6] => Array
                (

                    [21] => Array
                        (
                            [title] => title3
                            [description] => description3
                            [price] => price3
                        )
                }
        }
}

(На самом деле данные массива большие, поэтому они обрезаны, чтобы привести пример выше)

Что я пытаюсь сделатьзапускает цикл foreach над массивом, чтобы дать мне возможность сгруппировать данные в таблицу цен по отдельным группам (ключи массива [5] и [6])

Конечный результат, к которому я стремлюсь, - этоследующее:

Group1-Title


Title 1 |Desc |Цена
Название 2 |Desc |Цена


Group2-Title


Title 3 |Desc |Цена


До сих пор я пытался использовать цикл foreach с внутренним циклом foreach.Это вытягивает подробности и хорошо отражается - однако я не могу понять, как успешно сгруппировать данные во время цикла foreach.

Ответы [ 2 ]

3 голосов
/ 28 сентября 2011
$data = array(); //your data array above

//loop through the groups    
foreach($data['group'] as $key=>$group){
    //echo group header and table start
    echo "<h1>$group</h1>";
    echo "<table border=1>";
    //loop through the data with the corresponding group key
    foreach($data['treatment'][$key] as $row){
        //echo row data
        echo "<tr>";
        echo "<td>{$row['title']}</td>";
        echo "<td>{$row['description']}</td>";
        echo "<td>{$row['price']}</td>";
        echo "</tr>";
    }
    //close table.
    echo "</table>";
}
3 голосов
/ 28 сентября 2011

Вот один из способов сделать это. Возьмите первый элемент массива и используйте его для заголовков. Затем переберите остальную часть массива, используя ключи от первого элемента, чтобы отобразить результаты. Очевидно, мой код на дисплее быстрый и грязный, но с этого стоит начать.

foreach($your_array['group'] as $iGroupId => $sTitle) {
    echo 'Group: ' . $sTitle . "\n";
    foreach($your_array['treatment'][$iGroupId] as $aGroup) {
        echo implode('|', $aGroup); . "\n"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...