array trouble....

Alles, was PHP betrifft, kann hier besprochen werden.

array trouble....

Postby NickiGraus » 01. November 2005 12:00

Hoi ihrs,

evtl sieht ja einer von euch, was ich hier falsch mache:

Code: Select all
$uebersicht = array();
// animals
$uebersicht['animals']['cat'] = "Animals";
$uebersicht['animals']['dir'] = "./pics/animals/";
$uebersicht['animals']['feld'] = array();

// bermudas
$uebersicht['bermu']['cat'] = "Bermudas";
$uebersicht['bermu']['dir'] = "./pics/bermudas/";
$uebersicht['bermu']['feld'] = array();

// ...

   // get pictures
   foreach ($uebersicht as $key)
   {
      $key['feld'] = listImages($key['dir']); // gibt ein array zureuck
   }
print_r ($uebersicht['animals']['feld']); // ist leer???
echo "<hr>";
print_r ($key['feld']); // alle werte da!!!



Danke fuer eure Hilfe und gruesse aus Irland,

Nicki
Es ist ein Beweis der Bildung, die größten Dinge auf die einfachste Art zu sagen.

RW Emerson

Image
User avatar
NickiGraus
 
Posts: 40
Joined: 05. May 2004 12:49
Location: Irland

Postby Rolf Bergius » 01. November 2005 13:48

Mir ist nicht 100% klar was Du eigentlich möchtest.

Das Array $uebersicht hat 6 Elemente. Damit wird Deine foreach Schleife 6 mal durchlaufen. Macht aber nur für 2 Elemente Sinn.
Ich habe es nicht ausprobiert, aber was passiert bei:


Code: Select all
  foreach ($uebersicht[]['Feld'] as $key)
  {
      $key['feld'] = listImages($key['dir']); // gibt ein array zureuck
   }



tschau sir rolus
User avatar
Rolf Bergius
 
Posts: 35
Joined: 06. August 2005 12:00
Location: 29614 Soltau

Postby NickiGraus » 01. November 2005 14:08

Rolf Bergius wrote:Mir ist nicht 100% klar was Du eigentlich möchtest.

Das Array $uebersicht hat 6 Elemente. Damit wird Deine foreach Schleife 6 mal durchlaufen. Macht aber nur für 2 Elemente Sinn.
Ich habe es nicht ausprobiert, aber was passiert bei:
tschau sir rolus


$uebersicht hat 2 Haupt-Elemente :)
Somit 2 Durchlaeufe.
$key enthaelt somit den Inhalt vom $uebersicht[]
$key['feld'] ist ebenfalls ein array und wird ueber die Fktion
listImages($key['dir']) mit den Inhalt des Verzeichnisses gefuehlt.

Bis hierhin alles ohne Probs.

$key['feld'] enthaelt sogar die Daten, doch wenn $key nur eine
Platzhalter fur $uebersicht[]$key dastellt, wieso ist
$uebersicht[]['feld'] dann leer???

Ich moechte also eigentlich, das $uebersicht[]['feld'] den gleichen
Inhalt hat, wie $key['feld'].

Doch irgendwie mach ich da einen logischen Denkfehler, bzw sehe den
Wald vor lauten Baeumen nicht :?

Gruss,

Nicki
Es ist ein Beweis der Bildung, die größten Dinge auf die einfachste Art zu sagen.

RW Emerson

Image
User avatar
NickiGraus
 
Posts: 40
Joined: 05. May 2004 12:49
Location: Irland

Postby Rolf Bergius » 01. November 2005 15:03

Ich versehe es auch nicht. Deshalb arbeite ich bei Arrays grundsätzlich im Indizes. Ich hab folgenden Code ausprobiert:

Code: Select all
1  <?php
2  $bild_array = array();
3  $bild_array[]= "bild 1";
4  $bild_array[]= "bild 2";
5  $bild_array[]= "bild 3";
6
7  $uebersicht = array();
8  // animals
9  $uebersicht['animals']['cat'] = "Animals";
10 $uebersicht['animals']['dir'] = "./pics/animals/";
11 $uebersicht['animals']['feld'] = array();
12
13 // bermudas
14 $uebersicht['bermu']['cat'] = "Bermudas";
15 $uebersicht['bermu']['dir'] = "./pics/bermudas/";
16 $uebersicht['bermu']['feld'] = array();
17
18 // ...
19 
20 print_r ($uebersicht); // ist leer???
21 echo "<hr>";
22    // get pictures
23 foreach ($uebersicht as $label => $key)
24    {
25    echo $label;
26    $key['feld'] = $bild_array; // gibt ein array zureuck
27    print_r ($key['feld']); // alle werte da!!!
28    echo "<hr>";
29    }
30 print_r ($uebersicht['animals']['feld']); // ist leer???
31 echo "<hr>";
32 print_r ($uebersicht['bermu']['feld']); // ist leer???
33 echo "<hr>";
34 print_r ($key['feld']); // alle werte da!!!
35
36 ?>


Dabei fällt auf, dass $label leer bleibt und dass in Zeile 26 zweimal das Arrayindex[0] gefüllt wird, die erste Zuweisung also überschrieben wird.

Tut mir leid, dass ich Dir nicht weiterhelfen kann.

tschau sir rolus
User avatar
Rolf Bergius
 
Posts: 35
Joined: 06. August 2005 12:00
Location: 29614 Soltau

Postby nattl » 03. November 2005 00:10

der denkfehler ist: $key und $uebersicht sind zwei verschiedene variablen! du weist in der foreach-schleife $key einen wert zu und versuchst dann, in $uebersicht diesen wert auszulesen. aber $key hat keinen bezug zum ursprünglichen array, sondern beinhaltet lediglich bei jedem schleifendurchlauf den aktuellen wert der 1. dimension des arrays.
$uebersicht ist nach der schleife unverändert und beinhaltet somit keine zusätzlichen werte...

probier' folgendes aus, das sollte funktionieren:

Code: Select all
   foreach ($uebersicht as $key => $value)
   {
      $uebersicht[$key]['feld'] =listImages($key['dir']); // gibt ein array zureuck
   }


natürlich funktioniert das letzte print_r nicht mehr, da steht dann nur mehr schrott drinnen.
User avatar
nattl
 
Posts: 22
Joined: 26. October 2005 07:50
Location: Vienna


Return to PHP

Who is online

Users browsing this forum: No registered users and 10 guests