Hi!
Ich möchte das Array solange auslesen, bis es die Letzte Unterkategorie ausgelesen hat. Dafür müssen die Array Keys immer wieder erweitert werden. Der Code oben war nur zum testen, von einem original, damit wollte ich testen in welcher "Schreibweise" es funktioniert.
Hier wie ich es wirklich vorhab:
$Tiefe = "['getCategoryTreeResult']['Nodes']['Category']";
$i=0;
function Abfragen($Tiefe){
foreach($Result.$Tiefe as $ResultWert){
echo "1->: ".$ResultWert."<br>";
if(is_array($ResultWert) && !empty($ResultWert)){
$Tiefe = $Tiefe."[$i]['Nodes']['Category']";
Abfragen($Tiefe);
$i++;
}
else
{
echo "2->: ".$ResultWert."<br>";
}
}
}
Ist $ResultWert also ein Array, wird $Tiefe mit weiteren Array Keys erweitert und die Funktion damit erneut aufgerufen.
Eine andere Möglichkeit habe ich bisher nicht gefunden oder hinbekommen. Die Funktion array2Table habe ich mal verändert, aber habe sie nicht so hinbekommen, das einfach alle Werte nur untereinander geschrieben werden. Zudem verstehe ich auch nicht, wie es hier funktioniert, dass das Array komplett durchgegangen wird, ohne das irgendwo neue Array Keys übergeben werden?!
Hier der Code:
/**
* Translate a result array into a HTML table
*
* @author Aidan Lister <aidan@php.net>
* @version 1.3.1
* @link http://aidanlister.com/repos/v/function.array2table.php
* @param array $array The result (numericaly keyed, associative inner) array.
* @param bool $recursive Recursively generate tables for multi-dimensional arrays
* @param bool $return return or echo the data
* @param string $null String to output for blank cells
*/
function array2table($array, $recursive = false, $return = false, $null = ' ')
{
// Sanity check
if (empty($array) || !is_array($array)) {
return false;
}
if (!isset($array[0]) || !is_array($array[0])) {
$array = array($array);
}
// Start the table
$table = "<table>\n";
// The header
$table .= "\t<tr>";
// Take the keys from the first row as the headings
foreach (array_keys($array[0]) as $heading) {
$table .= '<th>' . $heading . '</th>';
}
$table .= "</tr>\n";
// The body
foreach ($array as $row) {
$table .= "\t<tr>" ;
foreach ($row as $cell) {
$table .= '<td>';
// Cast objects
if (is_object($cell)) { $cell = (array) $cell; }
if ($recursive === true && is_array($cell) && !empty($cell)) {
// Recursive mode
$table .= "\n" . array2table($cell, true, true) . "\n";
} else {
$table .= (strlen($cell) > 0) ?
htmlspecialchars((string) $cell) :
$null;
}
$table .= '</td>';
}
$table .= "</tr>\n";
}
// End the table
$table .= '</table>';
// Method of output
if ($return === false) {
echo $table;
} else {
return $table;
}
}
Gruß
NetLook