Mehrdimensionale arrays

Hallo,

bastel z. Z. an einer PHP-Seite die mehrdimensionale Arrays bearbeiten können soll.

$ergebnis_se = array();
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5, ‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname0“,
‚Teilnehmer_VHR.date‘ => „VHRdatum0“,
‚FESE.date‘ => „FESEdatum0“,
‚FESE.Wertung‘ => „3“);
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5, ‚Teilnehmer.vorname‘ => „VornameSE“, ‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname1“,
‚Teilnehmer_VHR.date‘ => „VHRdatum1“,
‚FESE.date‘ => „FESEdatum1“,
‚FESE.Wertung‘ => „2“);

Nun möchte ich gerne zwei Dinge mit diesen Daten anstellen können, hatte aber bislang keinen Erfolg:

  1. die Datensätze nach ‚FESE.Wertung‘ sortieren können
    sort($ergebnis_se[‚FESE.Wertung‘]);
    print_r($ergebnis_se);
  2. gezielt einzelne Daten in neue Arrays bringen können. z. B. den Array $fese_wertung[Teilnehmer_ID_TEILNEHMER[‚5‘]] = array(„3“, „2“)

Ist das irgendwie möglich?

Danke
Marcel

bastel z. Z. an einer PHP-Seite die mehrdimensionale Arrays
bearbeiten können soll.

$ergebnis_se = array();
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5,
‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname0“,
‚Teilnehmer_VHR.date‘ => „VHRdatum0“,
‚FESE.date‘ => „FESEdatum0“,
‚FESE.Wertung‘ => „3“);
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5,
‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname1“,
‚Teilnehmer_VHR.date‘ => „VHRdatum1“,
‚FESE.date‘ => „FESEdatum1“,
‚FESE.Wertung‘ => „2“);

Nun möchte ich gerne zwei Dinge mit diesen Daten anstellen
können, hatte aber bislang keinen Erfolg:

  1. die Datensätze nach ‚FESE.Wertung‘ sortieren können
    sort($ergebnis_se[‚FESE.Wertung‘]);

ich interpretiere mal, dass du $ergebnis_se ach dem wert des jeweiligen wert in FESE.Wertung sortieren moechtest.
das wuerde ich mit ursort http://php.net/usort loesen:

function cmp($a, $b)
 {
 if ($a['FESE.Wertung'] == $b['FESE.Wertung']) {
 return 0;
 }
 return ($a['FESE.Wertung'] 



> 2. gezielt einzelne Daten in neue Arrays bringen können. z. B.  
> den Array $fese\_wertung[Teilnehmer\_ID\_TEILNEHMER['5']] =  
> array("3", "2")


die anforderung verstehe ich nicht. dise codezeile hat auch keinerlei entsprechung im obigen code. aber wenn du z.b. im nachgang die 'FESE.Wertung' wertung eines teilnehmers in $ergebnis\_se aendern woelltest, wuerdest du notieren:



    
    $ergebnis\_se[teilnehmerid]['FESE.Wertung'] = 3;



wobei hierbei davon ausgegangen wuerde, dass du dein array nicht mit:
$ergebnis\_se[] = array(...);
sondern mit 
$ergebnis\_se[teilnehmerid] = array(...);
aufgebaut haettest - waere sicher ganz geschickt.

bastel z. Z. an einer PHP-Seite die mehrdimensionale Arrays
bearbeiten können soll.

$ergebnis_se = array();
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5,
‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname0“,
‚Teilnehmer_VHR.date‘ => „VHRdatum0“,
‚FESE.date‘ => „FESEdatum0“,
‚FESE.Wertung‘ => „3“);
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5,
‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname1“,
‚Teilnehmer_VHR.date‘ => „VHRdatum1“,
‚FESE.date‘ => „FESEdatum1“,
‚FESE.Wertung‘ => „2“);

Nun möchte ich gerne zwei Dinge mit diesen Daten anstellen
können, hatte aber bislang keinen Erfolg:

  1. die Datensätze nach ‚FESE.Wertung‘ sortieren können
    sort($ergebnis_se[‚FESE.Wertung‘]);

ich interpretiere mal, dass du $ergebnis_se ach dem wert des
jeweiligen wert in FESE.Wertung sortieren moechtest.
das wuerde ich mit ursort http://php.net/usort loesen:

function cmp($a, $b)
{
if ($a[‚FESE.Wertung‘] == $b[‚FESE.Wertung‘]) {
return 0;
}
return ($a[‚FESE.Wertung‘]

Vielen Dank! Das werde ich sofort ausprobieren. Hört sich auf jeden Fall nach dem an was ich erreichen möchte.

  1. gezielt einzelne Daten in neue Arrays bringen können. z. B.
    den Array $fese_wertung[Teilnehmer_ID_TEILNEHMER[‚5‘]] =
    array(„3“, „2“)

die anforderung verstehe ich nicht. dise codezeile hat auch
keinerlei entsprechung im obigen code. aber wenn du z.b. im
nachgang die ‚FESE.Wertung‘ wertung eines teilnehmers in
$ergebnis_se aendern woelltest, wuerdest du notieren:

Nein, sorry. Da habe ich mich unverständlich ausgedrückt.

Neben den hier aufgeführten Array-Einträgen kommen noch viele weitere hinzu. Letztendlich suche ich nach einer Möglichkeit in einem ersten Schritt die Daten aus dem komplexen Array nach einem bestimmten Kriterium zu sortieren (wie mit ursort ja offensichtlich möglich ist). Anschließend möchte ich aus den sortierten Daten beispielsweise alle identischen ‚VHR.name‘ heraussuchen und die dazugehörigen ‚FESE.Wertung‘ in einem Array ablegen. Gibt es mehrere ‚VHR.name‘ sollen diese auch in mehreren Arrays (mit zugewiesener ‚FESE.Wertung‘) abgelegt werden. Die Wertungen sind in diesem Fall ja Zahlen. Diese benötige ich in einem Array, um später (in einem weiteren Vorgang) verschiedene Berechnungen vornehmen zu können. Letzteres habe ich bereits hinbekommen. Nur die mehrdimensionalen Arrays (ganz oben) a) nach dem Kriterium ‚VHR.name‘ zu sortieren und
b) anschließend jedem ‚VHR.name‘ dazugehörige Bewertungen über ‚FESE.Wertung‘ in Form von Arrays zuzuweisen war nicht von Erfolg gekrönt.
Das Ergebnis müsste also so aussehen, das mehrere Variablen, abhängig von VHR.name und den zugewiesenen FESE.Wertung (in Form von Zahlen) bestimmen kann:
$var[VHR.name] = („3“, „2“, „3“, „0“);

Leider reichen meine PHP-Kenntnisse dafür (noch) nicht aus. Danke.
Marcel

$ergebnis_se[teilnehmerid][‚FESE.Wertung‘] = 3;

wobei hierbei davon ausgegangen wuerde, dass du dein array
nicht mit:
$ergebnis_se[] = array(…);
sondern mit
$ergebnis_se[teilnehmerid] = array(…);
aufgebaut haettest - waere sicher ganz geschickt.

bastel z. Z. an einer PHP-Seite die mehrdimensionale Arrays
bearbeiten können soll.

$ergebnis_se = array();
$ergebnis_se[] = array(‚Teilnehmer.ID_Teilnehmer‘ => 5,
‚Teilnehmer.vorname‘ => „VornameSE“,
‚Teilnehmer.name‘ => „NachnameSE“,
‚VHR.name‘ => „VHRname0“,
‚Teilnehmer_VHR.date‘ => „VHRdatum0“,
‚FESE.date‘ => „FESEdatum0“,
‚FESE.Wertung‘ => „3“);

Das Ergebnis müsste also so aussehen, das mehrere Variablen,
abhängig von VHR.name und den zugewiesenen FESE.Wertung (in
Form von Zahlen) bestimmen kann:
$var[VHR.name] = („3“, „2“, „3“, „0“);

vhrname ist an der stelle dynamisch, oder?

also diese routine wuerde dir die alle werte pro name zusammensuchen:

$werte\_pro\_name = array();


foreach ( array\_keys($ergebnis\_se) as $z0)
 {
 $vhrname = $ergebnis\_se[$z0]['VHR.name'];

 if (! is\_array( $werte\_pro\_name[$vhrname] ) )
 { $werte\_pro\_name[$vhrname] = array(); }

 $werte\_pro\_name[$vhrname][] = $ergebnis\_se[$z0]['FESE.Wertung'];
 }

mal ins blaue geschossen: kann es sein, dass du in php datenbank-daten versuchst zu transformieren, die man viel effizienter direkt von der db direkt transformieren lassen sollte?

also diese routine wuerde dir die alle werte pro name
zusammensuchen:

$werte_pro_name = array();

foreach ( array_keys($ergebnis_se) as $z0)
{
$vhrname = $ergebnis_se[$z0][‚VHR.name‘];

if (! is_array( $werte_pro_name[$vhrname] ) )
{ $werte_pro_name[$vhrname] = array(); }

$werte_pro_name[$vhrname][] =
$ergebnis_se[$z0][‚FESE.Wertung‘];
}

mal ins blaue geschossen: kann es sein, dass du in php
datenbank-daten versuchst zu transformieren, die man viel
effizienter direkt von der db direkt transformieren lassen
sollte?

Danke, das hört sich gut an. Und ja, stimmt… das array habe ich mir gebastelt um die DB-Daten zu simulieren. Gibt es da eine einfachere Möglichkeit?

Gruß
Marcel

mal ins blaue geschossen: kann es sein, dass du in php
datenbank-daten versuchst zu transformieren, die man viel
effizienter direkt von der db direkt transformieren lassen
sollte?

Danke, das hört sich gut an. Und ja, stimmt… das array habe
ich mir gebastelt um die DB-Daten zu simulieren. Gibt es da
eine einfachere Möglichkeit?

keine ahnung - haengt vom datenbankmodell, dem ziel der anwendung ab und dem, was du mit „db-daten simulieren“ meinst. man kann aber davon ausgehen, dass jedes programm das deutlich komplexer als <?php echo "hello world"; ?> ist, verbessert werden kann :smile: