2017-10-06 3 views
-1

Le titre semble un peu confus, même si je suis sûr qu'il existe une solution simple. J'utilise json_encode et je travaille sur une API web. L'API Web renverra un tableau json_encoded. Je veux que ça ressemble à ceci:Comment puis-je définir un tableau sans clé dans un autre tableau?

{ 
    { 
     "id": "test", 
     "reason": "test reason" 
    }, 
    { 
     { 
     "id": "test2", 
     "reason": "test reason2" 
    } 
} 

J'ai essayé ceci:

$array = array(); 

$array[""] = array(); 
$array[""]["id"] = "test"; 
$array[""]["reason"] = "test reason"; 

$array[""] = array(); 
$array[""]["id"] = "test"; 
$array[""]["reason"] = "test reason"; 

Cela a encore une touche bien ("") qui est gênant. Je ne veux pas de clé. Comment puis-je réparer cela? Merci! :)

+0

Vous pouvez utiliser le tableau '(array ("id"=> "test", "raison"=> "raison test"), array ("id"=> "test2", « raison "=>" test reason2 ")))' et utiliser 'JSO N_FORCE_OBJECT' pendant 'json_encode' pour forcer la partie externe à être un objet au lieu d'un tableau (' [...] '). – ccKep

+1

Utilisez comme 'array_push ($ array, array ('id' => 'test', 'reason' => 'test reason'))' then 'json_encode ($ array)' ou 'array (array ('vos données')) ». Voyez si cela vous aide! –

+0

@ccKep Peut-être, bien que le problème se pose lorsque je veux utiliser un code pour définir un tableau dans le tableau. Je ne veux pas définir le tableau avec tout ce qui est déjà à l'intérieur. – mccrafter1212

Répondre

0

Je pense que cela est plus en ligne avec votre code d'origine, vous presque aviez clouée

<?php 
$array = array(); 

// create 1st detail entry 
$arrayDetail = array(); 
$arrayDetail["id"] = "test"; 
$arrayDetail["reason"] = "test reason"; 

$array[] = $arrayDetail; // add detail to array 

// create 2nd detail entry 
$arrayDetail = array(); 
$arrayDetail["id"] = "test"; 
$arrayDetail["reason"] = "test reason"; 

$array[] = $arrayDetail; // add detail to array 

// show the output 
var_dump(json_encode($array, JSON_PRETTY_PRINT)); 
0
{ 
    { 
     "id": "test", 
     "reason": "test reason" 
    }, 
    { 
     { 
     "id": "test2", 
     "reason": "test reason2" 
    } 
} 

Cela ne peut être fait pour une bonne raison: en javascript, les accolades indiquent un objet . Dans un objet, chaque propriété doit avoir une clé. Les parenthèses à l'autre extrémité indiquent un Array numériquement-indexé.

Le type Array peut être déroutant car il s'agit d'un tableau tout-en-un, vous pouvez mélanger et faire correspondre les touches comme bon vous semble.

Donc, ce, au contraire, est JSON valide et peut-être ce que vous avez vraiment besoin (si vous ne vous souciez pas les clés, vous aurez besoin de boucler sur les valeurs):

[ 
    { 
     "id": "test", 
     "reason": "test reason" 
    }, 
    { 
     { 
     "id": "test2", 
     "reason": "test reason2" 
    } 
] 

EDIT

Vous pouvez créer un tel tableau en php par json_encode() comme ceci:

$array = [["id"=> "test","reason"=> "test reason"],["id"=> "test","reason"=> "test reason"]]; 
echo json_encode($array); 
+0

Comment pourrais-je utiliser cela, alors? Quel serait le code pour créer un tableau tel que celui que vous avez posté? – mccrafter1212

0

Vous pouvez obtenir ce format comme ci-dessous avec la méthode array_push,

$array = array(); 
array_push($array, array('id' => 'test', 'reason' => 'test reason')); 
echo json_encode($array); 

Le resut sera valide format JSON comme

[{"id":"test","reason":"test reason"}] 
+1

Les réponses au code seulement ne sont pas bonnes.Ajoutez des informations supplémentaires sur la manière dont votre suggestion répond à la question. –