2017-07-13 7 views
3

ich Daten in PHP in folgenden FormatAnzeige verschachtelte Array-Schlüsselwerte in jeweiligen Spalten php html

'Date 1' => 
    array (
    'Object 1 ' => 
    array (
     'Field 1' => Value 1, 
     'Field 2' => Value 2, 
     'Field 3' => Value 3, 
    ), 
), 
    'Date 2' => 
    array (
    'Object 1 in Date 2' => 
    array (
     'Field 1' => Value 1, 
     'Field 2' => Value 2, 
    ), 
    'Object 2 in Date 2' => 
    array (
     'Field 1' => Value 1, 
     'Field 2' => Value 2, 
     'Field 3' => Value 3, 
    ), 
), 
) 

Ich möchte zeigen die obigen Daten in HTML-Tabelle, die etwa wie folgt aussieht kommen:

Table

habe ich versucht, verschachtelte foreach-Schleifen verwenden, jedoch nicht das gewünschte Ergebnis zu bekommen. Wenn ich will nur nur Schlüssel eines des Arrays angezeigt verlassen sie die anderen Spalt leer und schaffen eine weitere Spalte für Verfahren Werte.

Alle Gedanken würden geschätzt werden.

Antwort

3

hoffe, dies wird Ihnen helfen:.

$result = array(
    'Date 1' => 
    array (
    'Object 1 ' => 
    array (
     'Field 1' => "Value 1", 
     'Field 2' => "Value 2", 
     'Field 3' => "Value 3", 
    ), 
), 
    'Date 2' => 
    array (
    'Object 1 in Date 2' => 
    array (
     'Field 1' => "Value 1", 
     'Field 2' => "Value 2", 
    ), 
    'Object 2 in Date 2' => 
    array (
     'Field 1' => "Value 1", 
     'Field 2' => "Value 2", 
     'Field 3' => "Value 3", 
    ), 
), 
); 
function count_childs($parent_array,$total = 0) 
{ 
    if(is_array($parent_array)) 
    { 
    foreach ($parent_array as $key => $value) { 
    if(is_array($value)){ 
     $total += count($value); 
     count_childs($value,$total); 
    } 
    else 
     $total += 1; 
    } 
    } 

    return $total; 
} 
$firstField =false; 
$first = false; 
echo '<div>'; 
echo '<table id="r" border=1>'; 
echo '<tr>'; 
echo '<th>Date</th>'; 
echo '<th>Object Type</th>'; 
echo '<th>Field</th>'; 
echo '<th>Count</th>'; 
echo '</tr>'; 
foreach ($result as $key=>$value){ 
    echo "<tr>"; 

    $date_rowspan = count_childs($value); 
    echo "<td rowspan= $date_rowspan>$key</td>"; 
    foreach ($value as $key1 => $value1) { 
    $obj_rowspan = count_childs($value1); 
    echo "<td rowspan= $obj_rowspan>$key1</td>"; 
    $first_row = true; 
    foreach ($value1 as $key2 => $value2) { 
     if($first_row){ 
     echo "<td>$key2</td><td>$value2</td></tr>"; 
     $first_row = false; 
     } 
     else 
     echo "<td>$key2</td><td>$value2</td><tr>"; 
    } 
    } 

    echo "</tr>"; 
} 
echo '</table>'; 
+0

es korrekt ist + 1 –

+0

gearbeitet. Danke vielmals! – ikck