Sebastian!: PHP Array

Hallo,

ich hab ein großes Array, dass ich ein wenig anders sortieren muss. Im großen und ganzen mache ich gerade das hier:

echo "<div style='border:thin solid black;width:90%;margin-left:auto;margin-right:auto;'>";
if(is_array($Array)) {
foreach($Array as $Key => $Value) {
     // For every element in the Array
if(is_array($Value)) {
     // If the successor Element also is an array which contains additional data

		     	if($Key != "attributes") {  
		     	     // Attributes didn't exist, continue normally  

if($Key != "value") {
$this->Convert($Value,$Key);
}
else {
$Test[$Context] = $Value;

$this->Convert($Value,$Context);
}
}
else {
}
}
else {
// The Element is just a simple value
array_push($this->Data,"$Context|$Key|$Value");
}
}
    }
else {
// Simple Value, not an Array which contains several values
array_push($this->Data,"$Context|$Array");
}
echo '</div><br>';

Das Array, dass ich zu "Konvertieren" habe, ist ungefähr so aufgebaut:

[0] => "test"
[1] => Array => Array => "test"
                      => "test"
             => Array => "test"
                      => "test"
                      => "test"
            => "test"
[2] => "test"

Ist nur ein kleiner Ausschnitt, geht teilweise bis zu einem 10d Array runter... Mein Problem ist, ich gehe jedes Array durch mit $Key => $Value und greife dann darüber darauf zu. Also $Value ist entweder ein normaler String hier immer Test, oder ein weiteres Array für das ich die Funktion neustarte. Mein Problem ist: Wenn $Value ein weiteres Array ist, kommt es MANCHMAL vor, dass dieses Array aus 2 Arrays nämlich "attributes" und "value" besteht, von denen ich nur das "value" attribut weiterverwenden möchte. Das heißt, wenn $Value ein Array ist, soll er nur $Value['value'] weitergeben und damit die Funktion neustarten, aber bitteschön $Value['attribute'] in Ruhe lassen! Wie kriege ich das hin? $Key != "attributes" funktioniert ja nicht, weil $Key ja gar nicht der Key von den einzelnen Teilen innerhalb des $Value-Arrays ist. Sowas wie if(isset($Value["attributes")) hat bei mir irgendwie auch nicht funktioniert. Was kann ich da bitte machen? Ich hoffe ich hab mein Problem ausreichen beschrieben.

  1. Tach!

    Das heißt, wenn $Value ein Array ist, soll er nur $Value['value'] weitergeben und damit die Funktion neustarten, aber bitteschön $Value['attribute'] in Ruhe lassen!

    Was anderes als eine Fallunterscheidung wird dir nicht bleiben, also if oder switch.

    Wie kriege ich das hin? $Key != "attributes" funktioniert ja nicht, weil $Key ja gar nicht der Key von den einzelnen Teilen innerhalb des $Value-Arrays ist.

    Du könntest deine Logik ändern. If attributes mach dies, else wenn value mach jenes, else mach sonstwas.

    dedlfix.

  2. hi,

    wenn ich es richtig sehe, dann sind deine parameter $key und $value. Selbige Variablen verwendest du intern wieder für das foreach. Somit steht dir der Parameter nicht mehr zur verfügung! Meiner Meinung nach sehr ungeschickt!
    Ich denke hier liegt auch schon dein Problem, soweit ich es verstanden habe.

    Dein Code hat eine Zeile am anfang zu wenig => function ...

    Formatiere deinen Code bitte das nächste mal mit einem klick auf den Button PHP. Dann wird es auch lesbar! Ebenso braucht dein Text hin und wieder einen Umbruch.