JSON mit Arrays

stimmen
0

Ich versuche, mit einem JSON-Objekt zwei Arrays von einem PHP zurückzukehren.

Hier ist mein PHP-Code:

$return = array();
$return += array('val1' => '1',
                 'val2' => '2',
                 'val3' => '3');
$tab = array();                 
for($i=0; $i<3; $i++)
{
    $val = table1  . $i;
    array_push($tab, array('tab1' => $val));
}
$return += $tab;

$tab = array();
for ($i = 0; $i < 5; $i++) {
    $val = table2  . $i;
    array_push($tab, array('tab2' => $val));
}
$return += $tab;
echo json_encode($return);

und hier ist mein JS-Code:

console.log(val1= + data.val1);
console.log(val2= + data.val2);
console.log(val3= + data.val3);
for(var i=0; i<3; i++)
console.log(tab1_ + i + = + data[i].tab1);
for (var i = 0; i < 5; i++)
console.log(tab2_ + i + = + data[i].tab2);

Und hier ist, was ich auf der Konsole erhalten:

val1=1
val2=2
val3=3
tab1_0=table1 0
tab1_1=table1 1
tab1_2=table1 2
tab2_0=undefined
tab2_1=undefined
tab2_2=undefined
tab2_3=undefined
tab2_4=undefined

Warum kann ich nicht hinzufügen, auf das JSON-Objekt auf Arrays? Was mache ich falsch? Danke für deine Hilfe.

Veröffentlicht am 18/12/2018 um 11:04
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Die +und +=Betreiber oft nicht funktionieren wie erwartet , wenn Arrays kombiniert werden . Wenn die Schlüssel in der zweiten Anordnung bereits in der ersten Anordnung vorhanden sind, wird sie übersprungen wird. Ihre zwei $tabArrays hatten beide Tasten 0, 1 und 2 , so wurden sie nicht hinzugefügt werden. Stattdessen ändern

$return += $tab;

zu

$return = array_merge($return, $tab);

die sollte schließlich so etwas wie dieses:

$return = array();
$return += array('val1' => '1',
                'val2' => '2',
                'val3' => '3');

$tab = array();
for($i=0; $i<3; $i++)
{
    $val = "table1 " . $i;
    array_push($tab, array('tab1' => $val));
}
$return = array_merge($return, $tab);

$tab = array();
for ($i = 0; $i < 5; $i++) {
    $val = "table2 " . $i;
    array_push($tab, array('tab2' => $val));
}
$return = array_merge($return, $tab);

echo json_encode($return);

und das Ergebnis sollte das sein, was Sie erwarten:

    {
    "0": {
        "tab1": "table1 0"
    },
    "1": {
        "tab1": "table1 1"
    },
    "2": {
        "tab1": "table1 2"
    },
    "3": {
        "tab2": "table2 0"
    },
    "4": {
        "tab2": "table2 1"
    },
    "5": {
        "tab2": "table2 2"
    },
    "6": {
        "tab2": "table2 3"
    },
    "7": {
        "tab2": "table2 4"
    },
    "val1": "1",
    "val2": "2",
    "val3": "3"
}
Beantwortet am 18/12/2018 um 11:37
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more