PHP аккуратный способ отображения результатов оператора JOIN с двойными идентификаторами - PullRequest
1 голос
/ 16 февраля 2011

У меня есть многомерный массив, который является результатом оператора JOIN.И мне было интересно, какой будет аккуратный способ отобразить это на странице.

Из-за JOIN многие строки имеют повторяющиеся идентификаторы, и при отображении на странице я хочу отобразить идентификатортолько один раз (даже если позже в массиве могут быть дубликаты этого идентификатора), за которыми следуют неуникальные столбцы строки

Я предполагаю, что я не проясняю себя, вот пример результатаиз JOIN:

$job_rows = array(
                    array("id" => 1, "output" => "file01", "output_type" => "FBX"),
                    array("id" => 1, "output" => "file02", "output_type" => "JPG"),
                    array("id" => 1, "output" => "file03", "output_type" => "JPG"),
                    array("id" => 2, "output" => "file05", "output_type" => "FBX"),
                    array("id" => 2, "output" => "file06", "output_type" => "JPG"),
                    array("id" => 2, "output" => "file07", "output_type" => "JPG"),
                    array("id" => 3, "output" => "file010", "output_type" => "FBX"),
                    array("id" => 3, "output" => "file011", "output_type" => "JPG")
                );

Я хотел бы отобразить это так:

ID : 1
    OUTPUTS :
    file01, FBX
    file02, JPG
    file03, JPG
ID : 2
    OUTPUTS :
    file05, FBX
    file06, JPG
    file07, JPG
ID : 3
    OUTPUTS :
    file010, FBX
    file011, JPG

... и т. д.

, в основном объединяя общие идентификаторы во время эхарезультаты на странице.Спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Если у вас будут свои идентификаторы в порядке, как подсказывает ваш вопрос, то вы можете отслеживать текущий идентификатор и выводить новый, только если идентификатор изменился. Что-то вроде

$curId = -1;
foreach($job_rows as $row) {
    if($row['id'] != $curId) {
        echo 'ID: '.$row['id']."\n\tOUTPUTS : \n";
        $curId = $row['id'];
    }
    echo "\t".$row['output'].', '.$row['output_type']."\n";
}
1 голос
/ 16 февраля 2011
<?php 
$output = array();
foreach ($job_rows as $key => $value)
{
    $output[$value['id']][] = $value['output'] . ", " . $value['output_type'];
}

Подойду ближе.Затем, после того, как вы правильно отформатировали выходной массив, вы можете просмотреть его.

<?php

foreach ($output as $id => $data)
{
    echo $id . "\n";
    foreach ($data as $k => $v)
    {
        echo "\t $v\n";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...