PHP аккуратный способ отображения результатов, без дублированного заголовка - PullRequest
3 голосов
/ 05 июня 2011

У меня есть многомерный массив, и я хочу, чтобы выходные данные выводили только уникальные заголовки в заголовках "id" и "output".

$job_rows = array(
                array("id" => 1, "output" => "file01", "output_type" => "FBX"),
                array("id" => 1, "output" => "file01", "output_type" => "JPG"),
                array("id" => 1, "output" => "file03", "output_type" => "JPL"),
                array("id" => 2, "output" => "file05", "output_type" => "FBX"),
                array("id" => 2, "output" => "file06", "output_type" => "JPX"),
                array("id" => 2, "output" => "file06", "output_type" => "JPG"),
                array("id" => 3, "output" => "file010", "output_type" => "FBX"),
                array("id" => 3, "output" => "file010", "output_type" => "JPA")
            );

Вывод, который я хочу выполнить.

ID : 1
    OUTPUTS :
    file01  FBX
            JPG
    file03  JPL
ID : 2
    OUTPUTS :
    file05  FBX
    file06  JPX
            JPG
ID : 3
    OUTPUTS :
    file010 FBX
            JPA


.. etc

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

Ответы [ 3 ]

0 голосов
/ 05 июня 2011

Создание нового массива / структуры данных на основе результатов с использованием id и output в качестве ключей:

$newArray = array();
foreach ($job_rows as $row) {
  $newArray[ $row['id'] ][ $row['output'] ][] = $row['output_type'];
}
var_dump($newArray);
0 голосов
/ 05 июня 2011

Simple. Просто следите за идентификатором и выходными значениями, убедитесь, что идентификаторы отсортированы в первую очередь. Возможно, вам придется выполнить дополнительное кодирование, чтобы получить правильную вкладку.

<?php

$currentID = null;
$currentFile = null;
foreach($items as $i) {
    if($currentID != $i['id']) {
         $currentID = $id;
         $currentFile = null;
         echo 'ID : '.$id."\n";
    }
    echo "\tOUTPUTS : \n";
    $file = $i['output'];
    if($currentFile != $file) {
        echo "\t\t$file\t{$i['output_type']}\n";
        $currentFile = $file;
    }
    else {
        echo "\t\t\t\t{$i['output_type']}\n";
    }
}

?>
0 голосов
/ 05 июня 2011

что-то в этом роде:

$ID = -999;
$FILENAME = "";
foreach ($job_rows as $key => $value) {    
    foreach ($value as $k => $v) {
        print ($ID === $value['id'])?"":"ID : ".$value['id']."<br />";
        print ($FILENAME === "".$value['output'])? "":$value['output']." ";
        print ($k == 'output_type')?$v."<br />":"";
        $ID = $value['id'];
        $FILENAME = "".$value['output'];
    }
}

и выдает результат в точности так, как вы хотели:

ID : 1
file01 FBX
JPG
file03 JPL
ID : 2
file05 FBX
file06 JPX
JPG
ID : 3
file010 FBX
JPA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...