Hilfe zu mehrdimensionale Arrays

hoscha123

Grünschnabel
Hallo liebe Leute,
habe wohl gerade eine Hirnblockade...
Nachdem ich auch dieses Forum durchsucht habe, leider aber nicht die richtige Lösung gefunden habe, möchte ich Euch um Hilfe bitten!
Ich möchte gerne ein mehrdimensionales Array bilden welches ich automatisiert erstellen will,
Die Tabelle sieht folgendermassen aus (bekomme sie leider nicht richtig abgebildet):

s1 s2 s3 s4 s5
b1 0,00 1,02 1,04 1,06 1,08
b2 0,98 0,00 1,02 1,04 1,06
b3 0,96 0,98 0,00 1,02 1,04
b4 0,94 0,96 0,98 0,00 1,02
b5 0,92 0,94 0,96 0,98 0,00

wie kann ich dies z.B. mit for-Schleifen bilden?

Dann die zweite Frage:
wie lese ich dann einen bestimmten Wert aus diesem erstellten Array aus.
Habe es schon so versucht:

$schlechter = 1.00;
$besser = 1.00;
$tmpbesser = 1.00;
$tmpschlechter = 1.00;
$Platz = 0;
for($x = 0; $x <= 17; $x++){
for($y = 0; $y <= 17; $y++){
$myArray = array(array($x),array("b".$Platz => $besser),array("s".$Platz => $schlechter));
$besser = $besser + 0.02;
$schlechter = $schlechter - 0.02;
print_r($myArray);
}
$tmpbesser = $tmpbesser - 0.02;
$tmpschlechter = $tmpschlechter + 0.02;
$besser = $tmpbesser;
$schlechter = $tmpschlechter;
$Platz++;
echo "<br><br>";
}

Wenn ich nun auf das Array zugreifen möchte mit z.B.

echo $myArray[b2][s3];

bekomme ich nichts heraus. Vielleicht kann mir ja jemand meine Blockade beseitigen und helfen

bedanke mich schon mal im voraus ....
 
Deinen "Tabelleninhalt" kannst du z.B. in eine Textdatei schreiben.

Diese kannst du auslesen und das Array folgendermaßen füllen (PseudoCode).
So würde ich das mal probieren:
PHP:
$x=0;

for ($i=0;$i<=max.Tabellendaten;$i++)
{

$DeinArray[$i][$x]="ausgelesener Text aus Datei";
$x++;
}


//oder das geht auch

$DeinArray = array(0=>array("Wert1","Wert2","Wert3"),
                            1=>array("Wert4","Wert5","Wert6"))//usw.;

//hast dann ein mehrdemensionales Array 

echo $DeinArray[0][0];
echo $DeinArray[0][1];
echo $DeinArray[0][2];
echo $DeinArray[1][0];
//usw.

Hoffe es hilft.
 
Der Grund warum dein echo nicht funktionierte war der das du dein array ständig neu überschrieben hast mit der zuweisung und somit hinterher eben keins rauskahm welches man verwenden könnte.

So ist es irgendwie einfacher:

PHP:
<?
$value = 1.00;
// Werte Sammeln und ins Array schreiben:
for($x = 0; $x <= 5; $x++){
    $tmpval = $value;
    for($y = 0; $y <= 5; $y++){
        // Wenn der Wert 1.00 ist wird er durch 0.00 ersetzt (war bei dir in der vorgabe ja auch so)
        $myArray["b".$x]["s".$y] = number_format(($tmpval==1?0:$tmpval),2,',','.');
        $tmpval += 0.02;
    }
    $value -= 0.02;
}

// Werte ausgeben:
echo '<table>';
// Header Zeile schreiben:
echo '<tr><td>&nbsp;</td>';
foreach ($myArray['b0'] as $s => $value){
    echo "<td>$s</td>";
}
echo '</tr>';
foreach ($myArray as $b => $row){
    echo '<tr>';
    // Vor jede Zeile den Zeilennamen
    echo "<td>$b</td>";
    foreach ($row as $s => $value){
        echo "<td>$value</td>";
    }
    echo '</tr>';
}
echo '</table>';
?>


Edit: oh wurd ja schon postet xD das passiert wenn man das antworten Fenster zu lange offen lässt ohne was zu Tippen ^^
 
Zuletzt bearbeitet:
Hi Hoscha

So wie ich das sehe, liegt das Problem in dieser Zeile:

PHP:
$myArray = array(array($x),array("b".$Platz => $besser),array("s".$Platz => $schlechter));

Dies erzeugt z.b. folgendes Array:

PHP:
Array
(
    [0] => Array
        (
            [0] => 0
        )

    [1] => Array
        (
            [b0] => 1.02
        )

    [2] => Array
        (
            [s0] => 0.98
        )

)

Daher ist es klar, wieso du nicht mit echo $myArray[b2][s3]; darauf zugreifen kannst.


Versuch die angesprochene Zeile mit folgender zu ersetzen:

PHP:
$myArray['b'.$x]['s'.$y] = $schlechter;


Noch etwas nützliches:
Sobald du ein Array mit print_r ausgibst, kannst du mit dem HTML-Tag "<pre>" dir dein Array schön formatiert (wie oben) ausgeben lassen, somit ist die Gliederung schön ersichtlich.
 
Zurück