2012-03-26 14 views
1

Ich möchte Elemente zu Arrays innerhalb eines Objekts hinzufügen, auf die ich so zugreife, um Daten abzurufen.Spleißen eines Elements in der Mitte eines assoziativen Arrays

var event_id = events_data.event_id[i]["0"]; 
var event_title = events_data.event_title[i]["0"]; 
var selected_source = events_data.selected_source[i]["0"]; 
var channel_id = events_data.channel_id[i]["0"]; 

Events_Data ist ein Objekt mit Elementen event_id, event_title, ... Das Objekt in einer PHP-Funktion wie folgt erstellt wird.

$return = array(); 
$return['event_id'] = $event_id; 
$return['event_title'] = $event_title; 
$return['selected_source'] = $selected_source; 
$return['channel_id'] = $channel_id; 
$return['channel_name'] = $channel_name; 
$return['event_site'] = $event_site; 
$return['event_url'] = $event_url; 
$return['start_date'] = $start_date; 
$return['start_time'] = $start_time; 
$return['end_date'] = $end_date; 
$return['end_time'] = $end_time; 
$return['event_notes'] = $event_notes; 

echo json_encode($return); 

EDIT - ADDED INFO

Das JSON-Objekt sieht wie folgt aus.

{ "event_id": [{ "0": "e20120319215556"}, { "0": "e20120310221512"}, { "0": "e20120319151903"}, { "0": "e20120309123705"}, {"0": "e20120307122044"}, {"0": "e20120306182514"}, {"0": "e20120309211714"}, {"0": "e20120314130727"}, {"0": "e20120319150532"}, { "0": "e20120319141928"}, { "0": "e20120319141201"}, { "0": "e20120301193226"}, { "0": "e20120301184354"}]}

END INFO ADDED

Auf der JavaScript-Seite bekomme ich das Array events_data so.

$.ajax({ 
    url: "get_events_data.php", 
    type: "POST", 
    dataType : 'json', 
    data: { }, 
    cache: false, 
    async: false, 
    success: function (rdata) { 
     events_data = rdata; 
        } 
     }); 

Um ein Element zu Events_Data auf der JavaScript-Seite, überprüfe ich für den Index hinzufügen, wo das neue Element hinzufügen und es dann mit Spleiß hinzuzufügen. Da die Daten jedoch mit dem Textschlüssel ["0"] für das assoziative Array abgerufen werden, kann ich die Spleißparameter nicht angeben.

for (var n=0; n<events_data.event_id.length; n++) { 
    if (current_event_id == events_data.event_id[n]["0"]) { 
     //splice_index = n;    
     events_data.event_id.splice(n,0,event_id); 
     events_data.event_title.splice(n,0,event_title); 
     events_data.selected_source.splice(n,0,selected_source); 
     events_data.channel_id.splice(n,0,channel_id); 
     events_data.channel_name.splice(n,0,channel_text); 
     events_data.event_site.splice(n,0,event_site); 
     events_data.event_url.splice(n,0,event_url); 
     events_data.start_date.splice(n,0,start_date_string); 
     events_data.start_time.splice(n,0,start_time_string); 
     events_data.end_date.splice(n,0,end_date_string); 
     events_data.end_time.splice(n,0,end_time_string); 
     events_data.event_notes.splice(n,0,event_notes); 
     break; 
    } 
} 

Angabe des Spleißindex "n" scheint es nicht zu tun. Was soll ich ändern?

Danke.

+0

es sieht aus wie Sie Arrays mit Objekten Vermischung werden und umgekehrt. Kurz gesagt, wenn Sie eine numerisch indizierte Datenstruktur mit garantierter Reihenfolge wünschen, verwenden Sie ein Array. Wenn Sie ein assoziatives Array mit einer Zeichenfolge als Schlüssel (anstelle einer Zahl) verwenden möchten, verwenden Sie Objekte. Wenn Sie Arrays verwenden, können Sie mit push, pop usw. Elemente hinzufügen und entfernen. – jbabey

+0

Dieses Array ist ein JSON-codiertes Objekt, das von einer PHP-Funktion zurückgegeben wird. Es funktioniert gut. Ich möchte nur wissen, wie man ein Element in der Mitte hinzufügt. Wenn ich das Array event_title so lese, wie var 'event_title = events_data.event_title [i] [" 0 "];', aus dem Objekt events_data, wie füge ich ein Element in der Mitte hinzu? – user823527

+0

Das Anzeigen Ihres JSON wäre viel hilfreicher als das Anzeigen Ihres PHP. – nrabinowitz

Antwort

Verwandte Themen