Alex_: Verschachteltes Array übersichtlich füllen

Beitrag lesen

Hallo,

ich muss ein Array mit relativ vielen Werten in PHP füllen. Dies muss in großen Teilen manuell erfolgen, weshalb ich mir gerne möglichst viel Schreibarbeit sparen würde.

Angefangen habe ich in etwa so:

$array['spieler']['pkt']['bez'] = 'Punkte';
$array['spieler']['pkt']['wert'] = $points;
$array['spieler']['rd']['bez'] = 'Spielrunden';
$array['spieler']['rd']['wert'] = $rounds;
$array['spieler']['ppr']['bez'] = 'Punkte pro Runde';
if($array['spieler']['rd']['wert'] > 0) {
   $array['spieler']['ppr']['wert'] = round($points / $runde, 2);
} else {
   $array['spieler']['ppr']['wert'] = 0;
}
...

Nachdem mir das zu unübersichtlich wurde bzw. zu viel Copy&Paste und Schreibarbeit, habe ich auf den verzichtbaren assoziativen Key der zweiten Hierarchie verzichtet und es wie folgt umsetzen wollen (testbar geschrieben):

<?php
$points = 10;
$rounds = 2;
$array['spieler'] = array(
  array('bez' => 'Punkte', 'wert' => $points),
  array('bez' => 'Spielrunden', 'wert' => $rounds),
  if($rounds>0){array('bez' => 'Punkte pro Runde', 'wert' => $points/$rounds); } // Fehlermeldung: Parse error: syntax error, unexpected T_IF, expecting ')' in ... on line 7
);
print_r($array);
?>

Wie kann ich hier die obige if-Bedingung sinnvoll einbauen unter Beibehaltung der automatischen Indizierung und der verkürzten Schreibweise? Oder muss ich zwingend zunächst die automatische Indizierung mit der schließenden Klammer + Semikolon beenden und dann neu starten mit

if($rounds>0 {$array['spieler'][]['bez'] ...

obwohl ich die verkürzte Schreibweise doch gerade so liebgewonnen habe?

Eine Alternative die mir noch einfallen würde, wäre die if-Bedingungen und Berechnungen vor der Arrayerstellung durchzuführen und in Variablen zu speichern; würde aber auch mehr Schreibarbeit bedeuten und die Berechnungen wären an ganz anderer Stelle im Script (unübersichtlicher?).

Freundliche Grüße Alex_