Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

PHP und Arrays
#1

Vielleicht kann hier ja jemand PHP... Smile

ich hab gerad ein blödes problem. Und zwar, habe ich ein Array:
(zur erklärung, das ganz array beinhaltet eine 7 tage woche mit stunden von 8-18...[$key][0] enthält das Datum, [$key][1] die stunde und [$key][2] die anzahl von user die in dieser stunde arbeiten.)

Code:
$work [] = array();

Array
(
[0] => Array
    (
        [0] => 02.05.2011
        [1] => 8
        [2] => 1
    )

[1] => Array
    (
        [0] => 02.05.2011
        [1] => 9
        [2] => 1
    )

[2] => Array
    (
        [0] => 02.05.2011
        [1] => 10
        [2] => 3
    )
.
.
.
.

[76] => Array
    (
        [0] => 08.05.2011
        [1] => 18
        [2] => 0
    )

und ich möchte den Wert [$key][2]
in ein anderes Array speichern, und zwar so:
(im beispiel unten hab ich nur die 1 manuell eingefügt).

Code:
$u_week[] = array();

Array
(
[0] => Array
    (
        [8] => 1
        [9] => 1
        [10] => 1
        [11] => 1
        [12] => 1
        [13] => 1
        [14] => 1
        [15] => 1
        [16] => 1
        [17] => 1
        [18] => 1
    )

[1] => Array
    (
        [8] => 1
        [9] => 1
        [10] => 1
        [11] => 1
        [12] => 1
        [13] => 1
        [14] => 1
        [15] => 1
        [16] => 1
        [17] => 1
        [18] => 1
    )
.
.
.
.
.  

[6] => Array
    (
        [8] => 1
        [9] => 1
        [10] => 1
        [11] => 1
        [12] => 1
        [13] => 1
        [14] => 1
        [15] => 1
        [16] => 1
        [17] => 1
        [18] => 1
    )

)

wobei $u_week[] den key 0-6 enthält,
und $u_week[][] als key die zahlen von [$key][1] und als wert eben [$key][2] vom array $work enthält.

ich habe es im moment so:

Code:
if(isset($work)){

  $u_week[] = array();

  foreach($work as $key => $wert){
  
    //Arbeitstage
    for($i = 0; $i < 7; $i++){
    
    
      //Stunden
      for($j = 8; $j < 19; $j++ ){
        $u_week[$i][$j] = 1;
      }
    }
  }
}

die zeile:

Code:
$u_week[$i][$j] = 1;

muss natürlich eben statt der 1
den wert

Code:
$u_week[$i][$j] = $work[$key][2];

enthalten, aber das klappt nicht.

wenn ich das so probiere, habe ich immer den letzten wert vom $work[$key][2]
in meinem $u_week array.

ich habe also folgende (fehlerhafte)ausgabe:

Code:
Array
(
[0] => Array
    (
        [8] => 0
        [9] => 0
        [10] => 0
        [11] => 0
        [12] => 0
        [13] => 0
        [14] => 0
        [15] => 0
        [16] => 0
        [17] => 0
        [18] => 0
    )

[1] => Array
    (
        [8] => 0
        [9] => 0
        [10] => 0
        [11] => 0
        [12] => 0
        [13] => 0
        [14] => 0
        [15] => 0
        [16] => 0
        [17] => 0
        [18] => 0
      )
.
.
.
.
.

der erste Block vom u_week array müsste aber SO aussehen:

Code:
Array
(
[0] => Array
    (
        [8] => 1
        [9] => 1
        [10] => 3
        [11] => 3
        [12] => 4
        [13] => 4
        [14] => 3
        [15] => 3
        [16] => 2
        [17] => 2
        [18] => 1
    )

ich habe das gefühl das ich im moment viel zu kompliziert denke, aber ich bekomme es einfach nicht hin.

sorry für den langen post,
aber ich denke sonst wäre das problem nicht verständlich beschrieben worden... Squint
Smile Gruss, l.m.  Smile
Zitieren
#2

Ok, ich hab jetzt keine Zeit, das selbst bei mir zu testen, aber folgendes sieht komisch aus:

PHP-Code:
foreach($work as $key => $wert){ 
Das " => $wert" ist überflüssig, bzw. entspricht nicht der [url=' http://www.php.net/manual/de/control-str...oreach.php']Syntax von foreach[/url].

Abgesehen davon ist $work ein multidimensionales Array, wobei du ja nur an [$key][2] interessiert bist.

Hierkannst du dir ansehen, wie man mit foreach bei multidimensionalen Arrays arbeitet.
Ich bin mir nicht sicher, ob er das hier schluckt:
PHP-Code:
foreach($work[][2] as $key){ 

Keine Ahnung, ob dir das hilft. Ist jetzt auch nur auf die Schnelle.
Zitieren
#3

hi, danke erstmal für die antwort.
doch doch, der syntax von foreach ist schon korrekt.
Zitat: foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
das => $wert speichert ja zusätzlich zum key noch das value in die variable $value.
das brauche ich auch, weil ich ja nicht den key sondern das value speichern möchte. Smile

dein syntax klappt nicht, weil er mir dann ein

Zitat: Fatal error: Cannot use [] for reading in C:\xampp\htdocs\intranet\class\class_Functions.php on line 155
raus wirft. bei foreach kann ich nicht einfach [] schreiben, weil das ja direkt ein neues array innerhalb des existierenden arrays erzeugt Smile .

iwie ist das eine ganz blöde sache die ich mir da zusammen programmiere... Rolleyes
aber irgendwie muss das doch gehen...
Smile Gruss, l.m.  Smile
Zitieren
#4

Dann mit mehreren verschachtelten foreach-loops, wie in dem Beispiel. Dann kommst du zumindest an den entsprechenden Index...
Zitieren
#5

aber ich komme doch an den index.
das ist ja nicht das problem.

sondern das er mir bei jedem schleifendurchlauf mein value überschreibt,
deswegen hab ich in meinem neuen u_week array was ich ja haben möchte
letztendlich immer nur den letzten wert vom $week[$key][2].
Smile Gruss, l.m.  Smile
Zitieren
#6

ich habe es jetzt einfach so...

PHP-Code:
$work array_chunk($work11); 

damit kann ich dann einfach mit

PHP-Code:
$user_week[$k][$i][2

über das array iterieren. meine güte, ist das eigentlich einfach .. Squint
Smile Gruss, l.m.  Smile
Zitieren


Möglicherweise verwandte Themen…
Thema / Verfasser Antworten Ansichten Letzter Beitrag
Letzter Beitrag von Beholder
01.03.2010 21:18

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste