Ich habe eine Website mit einem Eingabeformular bestehend aus ein paar Abschnitte. Ich speichere jede Eingabe in einem Array, und diese Arrays werden wieder in ein Array gepackt, so dass jeder Abschnitt sein eigenes Array hat.Array in Array lesen
Allerdings scheint ich Probleme mit dem Durchschleifen zu haben. Es muss die Abschnittsarrays durchlaufen, da diese "Abschnitts" -Arrays die Sprache enthalten, in der es in der Datenbank eingefügt werden soll.
Wie kann ich es richtig loopen?
Javascript
// Start Array to store each arrays
var preresult = [];
$(".accordeon-body").each(function() {
// DATA: Language Short
var language_short = $(this).data("id");
// Create Array from inputs, add language key
var array = $(this).find("textarea").serializeArray();
array.push({name: 'language', value: language_short});
// Create a JSON string from it
var string = JSON.stringify(array);
var object = {string};
preresult.push(object);
event.preventDefault();
});
var result = JSON.stringify(preresult);
Ergebnis wird dann mit einem AJAX POST gesendet.
ajax.php
// Get all POST Values
$string = $_POST['items'];
// Decode the Main JSON String
$objects = json_decode($string, true);
// For Loop the Objects String
for($i = 0; $i < count($objects); $i++){
$obj = json_decode($objects[$i]['string'], true);
// Foreach for every array
foreach($obj as $arr => $accord) {
// Foreach to get array Values
foreach($accord as $data) {
echo $data['agg_e_txt'];
}
}
}
diese Looping funktioniert jedoch nicht. Es gibt den Fehler Illegal String Offset
zurück. Aber ich bin mir nicht sicher, ob ich die Abschnittsarrays, die ich brauche, durchschlinge, sonst weiß ich nicht, wo ich sie in die Datenbank schreiben soll.
Wie bekomme ich das gewünschte Ergebnis?
UPDATE 1: Objekte $ drucken
die Objekte variablen Druck
Array
(
[0] => Array
(
[string] => [{"name":"agg_e_txt","value":"Gutentag. Dies ist ein test!"},{"name":"agg_e_rec","value":"Keine"},{"name":"agg_e_spec","value":"Keine"},{"name":"language","value":"de"}]
)
[1] => Array
(
[string] => [{"name":"agg_e_txt","value":"Hello there! How are U?"},{"name":"agg_e_rec","value":"None"},{"name":"agg_e_spec","value":"None"},{"name":"language","value":"en"}]
)
[2] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"fr"}]
)
[3] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"es"}]
)
[4] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"pt-br"}]
)
[5] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"ch"}]
)
[6] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"ko"}]
)
[7] => Array
(
[string] => [{"name":"agg_e_txt","value":""},{"name":"agg_e_rec","value":""},{"name":"agg_e_spec","value":""},{"name":"language","value":"ru"}]
)
)
In der for-Schleife extrahieren ich den zweiten JSON String Auf Anfrage.
UPDATE 2: var $ Artikel zurückgeben So sind die variablen Elemente zurückgibt nun die Sub-Array mit den 4-Arrays ich brauche:
Array
(
[0] => Array
(
[name] => agg_e_txt
[value] =>
)
[1] => Array
(
[name] => agg_e_rec
[value] =>
)
[2] => Array
(
[name] => agg_e_spec
[value] =>
)
[3] => Array
(
[name] => language
[value] => ru
)
)
Diese vier Werte sind die Werte ich für eine Abfrage benötigen. Diese Frage ist mein Endziel. Wie kann ich dieses Ziel erreichen? Ich möchte nicht jeden Wert nacheinander aktualisieren. (Es muss eine einzige Abfrage sein)
'print_r ($ object);' – AbraCadaver
@AbraCadaver die Frage – Synthiatic
aktualisiert versuchen, diese li zu ersetzen ne $ obj = json_decode ($ objekte [$ i] ['string'], true); mit $ obj = $ objects [$ i] ['string'] und überprüfen – rahulsm