2016-10-12 5 views
1

Ich muss ein assoziatives Array in einem normalen Array (nicht zu konvertieren) schieben.
Beispiel (NO CODE):
PHP Push-assoziative Array in normalen Array

project = {} 
element["title"] = "My title" 
element["description"] = "My description" 

ist es eine Möglichkeit, diese

echo $project->title; 
//or 
echo $project[0]["title"] 

haben? I'v versuchte dies, aber Server sagt: ERROR 500

$i = 0; 
    $projects = {}; 
    foreach($projectsElements as $element) { 
     while($i <= $nRowsForProject) { 
      $idSection = $element->idSection; 
      if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text; 
      else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text; 
      else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text; 
      $i++; 
     } 
     array_push($projects,$elements); 
     $i=0; 
    } 
+0

'$ Projekte [] = $ Element;'? –

+1

Sie verwechseln Dinge: Ein Objekt ist etwas anderes als ein Array. Der '->' Operator verweist auf eine Eigenschaft innerhalb eines Objekts, aber das ist nicht deklarativ möglich. Auch das Erstellen eines Objekts ist nicht möglich durch einen einfachen '$ projects = {};', wie Sie es versuchen, das ist ein Syntaxfehler (Ihr Fehler 500). Stattdessen müssen Sie normalerweise eine Klasse implementieren, von der Sie dann ein Objekt instanziieren können. – arkascha

Antwort

4

$projects = {}; ist nicht gültig php.

Wenn Sie ein leeres Array (assoziativ oder numerisch, das spielt keine Rolle) initialisiert werden soll, müssen Sie:

$projects = []; 

oder auf älteren PHP-Versionen:

$projects = array(); 

Beachten Sie auch, dass Sie müssen Sie das gleiche zu Ihrem $elements Array am Anfang jeder Iteration machen, sonst wird es bei jeder Iteration wachsen. Unter der Annahme, dass die Beschreibungen sind nicht alle gleich ...

foreach($projectsElements as $element) { 
    $elements = []; 
    while($i <= $nRowsForProject) { 
     ... 

Und Ihre while Schleife scheint nicht viel Sinn zu machen: Sie sind nicht mit der $i Variable in der Schleife werden so nur die gleichen Aufgaben zu tun bei jeder Iteration.

+0

mit [] funktioniert ... Ich bin dumm, danke! – ProtoTyPus

0
$projects = []; // declare empty array 
foreach($projectsElements as $element) { 
    $projects []= $element; // push $element into $projects array 
} 
0
$i = 0; 
$projects = array(); 
foreach($projectsElements as $element) { 
    while($i <= $nRowsForProject) { 
    $elements = array(); 
     $idSection = $element->idSection; 
     if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text; 
     else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text; 
     else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text; 
     $i++; 
    } 
    array_push($projects,$elements); 
    $i=0; 
}