Homepage selbermachen 7.851 Themen, 35.615 Beiträge

Mehrdimensionales Array

Gonzales / 7 Antworten / Baumansicht Nickles

Hallo,
habe ein komplexes Problem:
ich habe ein array $test = array("wert1","wert2"..);
da greife ich einfach mit foreach($test as $ausgabe){...} zu
doch ich will nun ein mehrdimensionales array erstellen

  • frage 1: Wie erstelle ich das zu nächst einmal?
  • jedem wert1, wert2 soll nun ein extrewert zugewiesen werden, der dann in der foreach schleife verfügbar sein muss, also beispielsweise muss dann der wert der auch wert1 zugewiesen ist, in dem durchlauf der foreach schleife verfügbar sein, in dem gerade wert1 aufgerufen wird.


    hoffe das versteht einer :)
bei Antwort benachrichtigen
Borlander Gonzales „Mehrdimensionales Array“
Optionen
Wie erstelle ich das zu nächst einmal?
Einfach weiteres Array im "übergeordneten" Array erstellen...

z.B.:
$array = array( array($value1, $value2, ...), array($value1, $value2, ...), ...)

oder
$array[1][] = $value


jedem wert1, wert2 soll nun ein extrewert zugewiesen werden, der dann in der foreach schleife verfügbar sein muss, also beispielsweise muss dann der wert der auch wert1 zugewiesen ist, in dem durchlauf der foreach schleife verfügbar sein, in dem gerade wert1 aufgerufen wird.
??? Etwas genauer wäre nicht schlecht, vielleicht klärt sich das auch noch im Chat...

CU Borlander
bei Antwort benachrichtigen
Gonzales Borlander „ Einfach weiteres Array im übergeordneten Array erstellen... z.B.: array array...“
Optionen

habe das jetzt mal so gemacht:

$test = array ("nama" => "0123456", "name2" => "0987654");

foreach($test as $ausgabe => $value){
..... }

aber wie ist das jetzt mit einem 3 dimensionalen array???

bei

$test = array ("nama" => "0123456" => "wert3");

zeigt er fehler an

bei Antwort benachrichtigen
xafford Gonzales „habe das jetzt mal so gemacht: test array nama 0123456 , name2 0987654 foreach...“
Optionen

was du da gemacht hast ist auch kein 3-dimensionales array, sondern ein syntaxfehler...klingt zwar ähnlich, sind aber 2 grundverschiedene dinge ;o)...
mal zum besseren verständnis:
stell dir arrays am besten als koordinatensystem vor. hast du nur eine dimension, dann liegen alle werte auf der x-achse und du erreichst jeweils einen wert, indem du seine position auf der x-achse angibst. als beispiel folgendes array:
$a=array(a,b,c,d,e);
du hast jetzt auf der achse bei x=0 den wert a, bei x=1 den wert b usw...
hast du jetzt ein array mit 2 dimensionen:
$a=array(array(a0,a1,a2),array(b0,b1,b2),array(c0,c1,c2))
dann wird aus deiner reinen x-achse jetzt ein echtes koordinatensystem mit x-y-achsen.
unter x=0 hast du jetzt nicht mehr einen wert, sondern eine wertemenge, die a0,a1 und a2 enthält. gibst du jetzt zusätzlich zur position x=0 noch y=1 an, dann landest du bei dem wert a1.
dementsprechend funktioniert es auch mit 3 und mehrdimensionalen arrays 8außer daß das mit dem vorstellen ab 3 dimensionen für manche leute recht schwierig wird) ;o)...
jetzt zu deinem fehler:
=> ist ein zuweisungsoperator. er weist einem schlüssel (der position auf der achse als analogie) einen wert zu, daraus erklärt sich auch, daß deine zuweisung nicht existieren kann, da einem schlüssel nur ein wert zugewiesen werden kann, auch wenn dieser wert selbst eine wertemenge darstellt. also funktioniert dies immer nur als:
SCHLÜSSEL => WERT
du mußt also wen du mehrdimensional definieren willst einen der 2 nachfolgenden wege gehen:
$a=array(a=>array(1,2,3),b=>array(4,5,6))
oder du adressierst einzelne "speicherzellen" des array direkt:
$a[0][0][1]=a;
jetzt hat synonym zum beispiel des koordinatensystems die speicherzelle mit der adresse x=0, y=0, z=1 den wert a.
ich hoffe, das war einigermaßen verständlich.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Gonzales Nachtrag zu: „Mehrdimensionales Array“
Optionen

function testfunktion($test=array("")){


testfunktion( $test[] = array ("xafford","1"),
$test[] = array ("Gonzales","2")
);


foreach($test as $testausgabe)
{ echo $linkausgabe[0][0];

}

bei Antwort benachrichtigen
Borlander Gonzales „function testfunktion test array testfunktion test array xafford , 1 , test...“
Optionen

Das gibt ne schöne Endlosschleife, wenn sich die Funktion jedesmal ohne Überprüfen einer Bedingung selbst aufruft ;-)

bei Antwort benachrichtigen
Heinz_Malcher Gonzales „Mehrdimensionales Array“
Optionen

Weiss ja nicht was ihr genau vorhabt, aber wenn ich das so sehe, wieso so komplex und verstrickt?

$a[] = array("name1","nummer1");
$a[] = array("name2","nummer2");
$a[] = array("name3","nummer3");

$i=0;
for($i=0;$i echo $a[$i][1] ;
echo $a[$i][0] ;
echo"
";
}

bei Antwort benachrichtigen
Gonzales Nachtrag zu: „Mehrdimensionales Array“
Optionen

Danke Heinz für den Tipp, der klappt auch aber weiterhin stellt sich mir die Frage...
wie mache ich das mit der funktion klar, dort drinnen wird deine schleife nicht wirklich akzeptiert?


function table($test[]=array("")){...}
oder etwas so??
function table($test=array("")){...}

bei Antwort benachrichtigen