Mehrdimensionales Array erstellen
Sven
- php
0 ChrisB0 fwaw0 Felix Riesterer0 Edgar Ehritt
Hallo,
ich möchte ein mehrdimensionales Array erstellen, das folgende Infos enthält:
Ich habe dazu auch mal folgende Übersicht gemacht:
Array
(
[id] => Array
(
[0] => 0
[1] => 1
)
[name] => Array
(
[0] => ABC
[1] => LMN
)
[projects] => Array
(
[projectcode] => Array
(
[0] => Array
(
[0] => Akquisition
[1] => Entwicklung
[2] => Kommunikation
)
[1] => Array
(
[0] => Präsentation
[1] => Verkauf
[2] => Versand
)
)
[project_order] => Array
(
[0] => Array
(
[0] => 10
[1] => 20
[2] => 30
)
[1] => Array
(
[0] => 20
[1] => 30
[2] => 10
)
)
)
)
Ich krieg's aber nicht hin, soll heißen irgendwie sieht es immer anders aus. Geht das überhaupt so, wie ich es dargestellt habe?
Hier mein letzter Versuch:
$test['id'][] = '1';
$test['name'][] = 'ABC';
$test['projects']['projectcode'][] = 'Akquisition';
$test['projects']['order'][] = '10';
$test['projects']['projectcode'][] = 'Entwicklung';
$test['projects']['order'][] = '20';
$test['projects']['projectcode'][] = 'Kommunikation';
$test['projects']['order'][] = '30';
$test['id'][] = '2';
$test['name'][] = 'XYZ';
$test['projects']['projectcode'][] = 'Präsentation';
$test['projects']['order'][] = '30';
$test['projects']['projectcode'][] = 'Verkauf';
$test['projects']['order'][] = '20';
$test['projects']['projectcode'][] = 'Versand';
$test['projects']['order'][] = '10';
print_r($test);
Wo könnte der Fehler liegen? Danke schonmal!
Gruß
Sven
Hi,
ich möchte ein mehrdimensionales Array erstellen, das folgende Infos enthält:
[...]
[projects] => Array
(
[projectcode] => Array
(
[0] => Array
(
[0] => Akquisition
[1] => Entwicklung
[2] => Kommunikation
)
Ich krieg's aber nicht hin, soll heißen irgendwie sieht es immer anders aus. Geht das überhaupt so, wie ich es dargestellt habe?
Natürlich geht das.
Hier mein letzter Versuch:
$test['id'][] = '1';
$test['name'][] = 'ABC';
$test['projects']['projectcode'][] = 'Akquisition';
$test['projects']['order'][] = '10';
$test['projects']['projectcode'][] = 'Entwicklung';
$test['projects']['order'][] = '20';
$test['projects']['projectcode'][] = 'Kommunikation';
Dadurch, dass du hier jeweils
`$test['projects']['projectcode'][] = '...';`{:.language-php}
schreibst, legst du in jedem dieser Schritte ein neues Element unterhalb von $test['projects']['projectcode'] an - genau das bewirken schliesslich die leeren eckigen Klammern.
Du willst aber gar nicht jedes Mal ein neues Element auf dieser Ebene für Akquisition, Entwicklung und Kommunikation anlegen - sondern sie zusammen in einem (Unter-)Array haben. Also musst du auch dafür sorgen, dass an dieser Stelle ein weiteres Array angelegt und die Werte hineingepackt werden.
MfG ChrisB
--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
Moin,
mit [] legst du einen neuen Eintrag in deinem Array an und somit einen neuen Schlüssel. Deine Arrays benötigen aber alle denselben Schlüssel.
$test['id'][] = '1';
könnte so eindeutig werden:
$test['id'][1] = 1;
und dann geht es weiter mit
$test['name'][1] = 'ABC';
mit der "1" hast du ja schon deine ID, die du verwenden kannst.
Eine andere Möglichkeit wäre es, den Schlüssel nur einmal zu benutzen.
$test[] = array(
'id' => '1',
'name' => 'ABC',
'projects' => array(
'usw' => array(
),
'usw' => 'etc'
)
);
MfG,
fwaw
Lieber Sven,
ich würde das Array anders aufbauen. Warum nicht so?
$projekte = array(
// erstes Projekt (mit laufender Nummer im Array-Index)
0 => array (
'id' => '1', // Projekt mit der ID "1"
'name' => 'ABC', // Projektname
'codes' => array (
// hier stehen die Projekt-Codes
'Akquisition' => 10,
'Entwicklung' => 20,
'Kommunikation' => 30
)
),
// zweites Projekt
1 => array (
'id' => '2', // Projekt mit der ID "2"
'name' => 'LMN', // Projektname
'codes' => array (
// hier stehen die Projekt-Codes
'Präsentation' => 20,
'Verkauf' => 30,
'Versand' => 10
)
)
)
Obiger Code sollte etwas leichter verständlich und in seiner Struktur zwingender sein. Und wenn ich ein weiteres Projekt dem Array hinzufügen will, dann mache ich das so:
// neues Projekt definieren
$p = array(
'id' => '42', // Projekt mit der ID "42"
'name' => 'FOO', // Projektname
'codes' => array (
// hier stehen die Projekt-Codes
'Distribution' => 99,
'Operation' => 34,
'Rekreation' => 22
)
);
// neues Projekt übernehmen
$projekte[] = $p;
Wenn Dir die Projekt-IDs egal sind, dann könnte man den Index "id" komplett entfernen und die "laufende Nummer" im Array "projekte" stattdessen benutzen.
Liebe Grüße,
Felix Riesterer.
Hallo Sven,
- Personen (ID)
- Personen (Name)
- Projekte, in denen die Personen involviert sind (diese als Unter-Array). Jedes Projekt besteht aus: Projektcode und Order-Nummer (ein Integer-Wert, der die Reihenfolge festlegen soll, wenns später tabellarisch dargestellt wird).
Du kannst den Zusammenhang zwischen Projketcode und Order-Nr. nicht direkt herstellen. So verstehe ich jedenfalls Dein Problem.
Name und Projekt sind Eigenschaften des Objekts Person mit der Identität ID, Projektcode und Order-Nummer sind im bezüglich einer Person Eigenschaften eines Projektes. Das ist eigentlich etwas für OOP:
class projekt{
$set=array();
function set_user($code,$order){
$this->set[$code]=$order;
}
}
class person{
$name ='';
$projekte =new projekt;
function set_projekt($code,$order){
$this->projekte->set_user($code,$order);
}
}
class personal{
$ids =array();
function new_id($id,$name){
if(!array_key_exists($id,$this->ids)){
$this->ids[$id]=new person;
$this->ids[$id]->name=$name;
}
}
function set_projekt($id,$code,$order){
$this->ids[$id]->set_projekt($code,$order);
}
}
Gruß aus Berlin!
eddi