26
1 PHP – JavaScript Kapitel 9 PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004 Arrays

Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

1

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Arrays

Page 2: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

2

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Problem:

Volatilitätenbeispiels in der Programmiersprache JavaScript.

Der Benutzer unseres Programms soll die Aktienkurse für beliebig viele Tage eingeben können. Dabei soll er zunächst sagen, wie viele Tage berücksichtigt werden sollen. Sodann kann er für jeden dieser Tage einen Kurs eingeben. Ausgegeben werden soll zunächst der Durchschnitt der Kurse, dann die Varianz, dann die Volatilität und zum Schluss noch einmal die eingegebenen Werte.

Page 3: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

3

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

JavaScript Array-Regeln

Deklaration eines Arrays :var meinArray;

Erzeugung eines Arrays :meinArray=new Array();

Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten:meinArray=new Array(5);

Der Array-Index wird von 0 hochgezählt.

Zugriff auf Felder über eckige Klammern:meinArray[0]=1;

Die Elemente eines Arrays werden bei Benutzung erzeugt.

Page 4: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

4

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

JavaScript Array-Regeln (2)

Die Elemente eines Array müssen nicht vom gleichen Typ sein.meinArray[0]=10 meinArray[1]="diesesFeldIstEinString";

Die Werte mehrerer Felder eines Arrays können mit einer Anweisung zugewiesen werden. Dies geschieht, indem die Werte in eckigen Klammern eingeschlossen und durch Kommata getrennt dem Arraynamen zugewiesen werden:

meinArray = [0,1,2];

ist gleichbedeutend mit:

meinArray[0] = 0;meinArray[1] = 1;meinArray[2] = 2;

Page 5: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

5

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Typen von Arrays in JavaScript- in JavaScript gibt es eine Array-Klasse

Einfache ArraysmyArray= new Array(3);myArray[0]=10;myArray[1]=11;myArray[2]=12;

document.write(myArray[0]);myArray= new Array(10,11,12);

Assoziative ArraysmyArray=new Array();myarray=["Eins"]="Prof";myarray=["Zwei"]="Student";myarray=["Drei"]="Mitarbeiter";

document.write(myArray["Eins"]);

Page 6: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

6

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Typen von Arrays in JavaScriptMehrdimensionale Arrays

myArray=new Array;myArray[0]=new Array("Professor","Student","Mitarbeiter");myArray[1]=new Array("EinsLive","WDR2","WDR3","WDR4","WDR5");myArray[2]=new Array("Audi","BMW","Mercedes", "Ford", "Opel", "VW");

document.write(myArray[0][2]+"<br>");document.write(myArray[2][0]+"<br>");

var raueme;raeume=new Array(27);for(i=0;i<raume.lenght;i++){

raeume[i]=new Array(3);}

raueme[0][0]=10;

Wichtig:meinArray.length gibt die Länge (Anzahl Elemente) des Arrays aus.

Page 7: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

7

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Volatilitätenbeispiel<script language = "JavaScript">

var anzahlTage;var i;var durchschnitt;var varianz;var dt;var kurs;kurs=new Array();durchschnitt=0;varianz=0;anzahlTage=parseInt(prompt("Bitte geben Sie die Anzahl der Tage ein!"));for(i=0;i<anzahlTage;i++){

kurs[i]=parseFloat(prompt("Nächster Kurs bitte!"));durchschnitt+=kurs[i];

}durchschnitt/=anzahlTage;for(i=0;i<anzahlTage;i++){

varianz+=(kurs[i]-durchschnitt)*(kurs[i]-durchschnitt);}varianz/=(anzahlTage-1);dt=anzahlTage/250;//Volatilitaetvolatilitaet=varianz/Math.sqrt(dt);

Page 8: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

8

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Typen von Arrays in PHPEinfache Arrays$myArray=array();$myarray=(1,2,3,4,5,"test", "ok", 68,34);

Assoziative Arrays$myArray=array();$myarray=("ErsterWert"=>"Prof", "ZweiterWert"=>"Student", "DritterWert"=>"LBA");

Mehrdimensionale Arrays$myArray=array();$myarray=("Eins"=>array("Test", "OK"), "zwei"=>array("foo"=>array("bar", "doe"));

Page 9: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

9

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

PHP-Array Regeln

Keine Deklaration, kein Zwang zur Erzeugung

$meinArray[0]=0;$meinArray[1]=1;

Mögliche Erzeugung$meinArray=Array();

Vorbelegung bei Erzeugung$meinArray=array(23, 45);

Auch in php müssen die Elemente eines Arrays nicht vom gleichen Typ sein.Wichtig:Arrays in PHP können gesplittet, sortiert, verkettet, in einzelne Variable aufgeteilt werden . Sehen Sie in die php-Funktionsreferenz unter dem Stichwort Array.Beispiel: Die Funktion count

$meinArray=array(23, 45);echo count($meinArray);

Page 10: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

10

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Die for - Schleife

for(Initialisierungsanweisung;Bedingung;Änderungsanweisung){

anweisung1;...anweisungN

}

<?phpfor($i=0;$i<4;$i++){

$meinArray[$i]=$i*2;}for($i=0;$i<count($meinArray);$i++){

echo "Der Wert zum Index $i ist $meinArray[$i]<br>";}

?>

Page 11: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

11

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Besetzen und Auslesen eines Arrays mit einer for-schleife<?php

for($i=0;$i<4;$i++){

for($j=0;$j<3;$j++){

$meinArray[$i][$j]=$i*$j;}

}for($i=0;$i<count($meinArray);$i++){

for($j=0;$j<count($meinArray[$i]);$j++){

echo "{$meinArray[$i][$j]} ";}echo "<br>";

}?>

Page 12: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

12

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Aufgabe

Aufgabe:1. Erzeugen Sie ein zweidimensionales Array in phpund geben Sie es in einer Tabelle aus.

2. Schreiben Sie nun eine Funktion, die ein zweidimensionales Array in einer Funktion ausgibtund benutzen Sie diese.

3. Lagern Sie das Array in eine Klasse HtmlDarstellung aus!

Page 13: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

13

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung 1for($i=0;$i<4;$i++){

for($j=0;$j<3;$j++){

$meinArray[$i][$j]=$i*$j;}

}echo "<table>";for($i=0;$i<count($meinArray);$i++){

echo "<tr>";for($j=0;$j<count($meinArray[$i]);$j++){

echo "<td>";echo $meinArray[$i][$j];echo "</td>";

}echo "</tr>";

}echo "</table>";

Page 14: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

14

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung 2

<?phpfunction stelleArrayAlsHtmlTabelledar($meinArray, $border){

echo "<table border='$border'>";for($i=0;$i<count($meinArray);$i++){

echo "<tr>";for($j=0;$j<count($meinArray[$i]);$j++){

echo "<td>";echo $meinArray[$i][$j];echo "</td>";

}echo "</tr>";

}echo "</table>";

}

Page 15: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

15

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung 2-2

for($i=0;$i<4;$i++){

for($j=0;$j<3;$j++){

$meinArray[$i][$j]=$i*$j;}

}stelleArrayAlsHtmlTabelledar($meinArray, "2");

?>

Page 16: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

16

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung 3 – Die Klasseclass HtmlDarstellung {

function stelleArrayAlsHtmlTabelledar($meinArray, $border){

echo "<table border='$border'>";for($i=0;$i<count($meinArray);$i++){

echo "<tr>";for($j=0;$j<count($meinArray[$i]);$j++){

echo "<td>";echo $meinArray[$i][$j];echo "</td>";

}echo "</tr>";

}echo "</table>";

}}

Page 17: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

17

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung 3 – Der Aufruf

<?phprequire_once("./klassen/HtmlDarstellung.inc.php");

for($i=0;$i<4;$i++){

for($j=0;$j<3;$j++){

$meinArray[$i][$j]=$i*$j;}

}HtmlDarstellung::stelleArrayAlsHtmlTabelledar($meinArray, "2");

?>

Page 18: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

18

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Regeln

Nach der for-Anweisung darf kein Semikolon stehen.

Initialisierungsanweisung, Bedingung und Änderungsanweisung werden durch Semikolons getrennt.

Es kann mehrere Initialisierungsanweisungen und Änderungsanweisungen in einer for-Schleife geben.

Sie werden dann jeweils durch Kommata getrennt.

Page 19: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

19

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Die foreach - Schleife

foreach($meinArray As $wert){

anweisung1anweisung1;...anweisungN

}<?php

for($i=0;$i<4;$i++){

$meinArray[$i]=$i*2;}foreach($meinArray As $arrayWert){

echo "Der nächste Wert des Arrays ist $arrayWert <br>";

}?>

Page 20: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

20

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

mehrdimensionaler Arrays mit der foreach-Schleife

<?phpfor($i=0;$i<4;$i++){

for($j=0;$j<3;$j++){

$meinArray[$i][$j]=$i*$j;}

}foreach($meinArray As $arrayVector){

foreach($arrayVector As $arrayWert){

echo "$arrayWert ";}echo "<br>";

}?>

Page 21: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

21

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Die foreach-Schleife für assoziative Arrays in php

foreach($meinArray As $arraySchluessel => $arrayWert){

anweisung1anweisung1;...anweisungN

}

Page 22: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

22

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Beispiel

<?php$essen=array('Montag'=>'Graupensuppe',

'Dienstag'=>'Linsensuppe','Mittwoch'=>'Hühnersuppe','Donnerstag'=>'Gulaschsuppe','Freitag'=>'Chili Con Carne');

foreach($essen As $arraySchluessel => $arrayWert){

echo "Der Index des Arrays ist $arraySchluessel, der Wert $arrayWert <br>";}

?>

Page 23: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

23

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Aufgabe

Aufgabe

Erweitern Sie Ihre Klasse HtmlDarstellung um eine Funktion,die ein assoziatives Array in einer html-Tabelle ausgibt.

Rufen Sie diese Funktion mit dem assoziativen Array aus demBeispiel auf!

Page 24: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

24

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung: Die Klassenerweiterung<?phpclass HtmlDarstellung2 {

function stelleAssoziativesArrayAlsHtmlTabelledar($meinArray, $border){

echo "<table border='$border'>";foreach($meinArray As $key => $value){

echo "<tr>";echo "<td>";echo $key;echo "</td>";echo "<td>";echo $value;echo "</td>";echo "</tr>";

}echo "</table>";

}

Page 25: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

25

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung: Die Klassenerweiterungfunction stelleArrayAlsHtmlTabelledar($meinArray, $border){

echo "<table border='$border'>";

Page 26: Arrays - fb6.info · Erzeugung eines Arrays mit Angabe der Anzahl Koordinaten: meinArray=new Array(5); Der Array-Index wird von 0 hochgezählt. Zugriff auf Felder über eckige Klammern:

26

PHP – JavaScript Kapitel 9

PHP / JavaScript Bernd Blümel & Christian Metzger – Version 22.03.2004

Lösung: Der Aufruf<?php

require_once("./klassen/HtmlDarstellung2.inc.php");$essen=array('Montag'=>'Graupensuppe',

'Dienstag'=>'Linsensuppe','Mittwoch'=>'Hühnersuppe','Donnerstag'=>'Gulaschsuppe','Freitag'=>'Chili Con Carne');

HtmlDarstellung2::stelleAssoziativesArrayAlsHtmlTabelledar($essen, $border)

?>