JSON avec des tableaux

voix
0

Je suis en train de retourner deux tableaux à partir d'un PHP avec un objet JSON.

Voici mon code PHP:

$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);

et voici mon code JS:

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);

Et voici ce que je reçois sur la console:

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

Pourquoi ne puis-je ajouter aux tableaux à l'objet JSON? Qu'est-ce que je fais mal? Merci de votre aide.

Créé 18/12/2018 à 11:04
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Les +et +=souvent les opérateurs ne fonctionnent pas comme prévu lors de la combinaison des réseaux. Si les clés du deuxième réseau sont déjà présents dans le premier tableau, ils seront ignorés. Vos deux $tabtableaux avaient tous les deux touches 0, 1 et 2 , de sorte qu'ils ne sont pas ajoutés. Au lieu de cela, le changement

$return += $tab;

à

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

qui devrait enfin être quelque chose comme ceci:

$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);

et le résultat devrait être ce que vous attendez:

    {
    "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"
}
Créé 18/12/2018 à 11:37
source utilisateur

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