PHP-Arrays sind assoziative Zuordnungen, in denen der Schlüssel eine Ganzzahl oder eine Zeichenfolge sein kann.
Ganzzahlige Schlüssel können automatisch in aufsteigender Reihenfolge zugeordnet werden, damit sie genauso funktionieren wie ein konventionelles mit Ganzzahlen indexiertes Array. PHP unterstützt einen leeren Indexoperator ([]), der auf der linken Seite einer Zuordnung angegeben werden kann, um dem Array ein Element hinzuzufügen, wobei ein ganzzahliger Index mit dem Wert des höchsten aktuellen Indexes plus 1 verwendet wird.
Assoziative PHP-Arrays werden als JSON-Objektstrukturen modelliert, weil JSON-Arrays anonym sind.
Der PHPCompute-Knoten unterstützt die PHP-Konstante MB_JSON_ARRAY, die Sie in der MbElement-Methode setType() verwenden können, um aus einem vorhandenen JSON-Element ein JSON-Array zu machen. Diese Methode wird normalerweise verwendet, wenn Elemente durch Kopieren aus einer Baumstruktur, die zu einer anderen Parserdomäne gehört, erstellt wurden.
Um auf einen vorhandenen Wert eines JSON-Array-Eintrags in einer Baumstruktur zuzugreifen oder diesen zu ändern, können Sie einen Array-Index ([index]) verwenden, um den erforderlichen Eintrag auszuwählen. JSON-Array-Einträge können in der JSON-Baumstruktur nicht mit dem Format [index] erstellt werden. Falls Sie dies dennoch versuchen, wird eine Ausnahmebedingung ausgelöst.
->address['street']
Die folgenden Beispiele veranschaulichen, wie Sie PHP-Arrays mit JSON verwenden können:
$strVar = "this";
$boolVar = true;
$output_assembly->JSON->Data[] = $strVar;
$output_assembly->JSON->Data[] = $boolVar;
Wenn Sie Einträge an ein vorhandenes Array anfügen möchten, müssen Sie den Operator zum Anhängen eines Array-Index ([]) verwenden. In diesem Fall können Sie das Format [index] nicht verwenden.
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01001000:Array ): Data = (
(0x03000000:NameValue): Item = 'this' (CHARACTER)
(0x03000000:NameValue): Item = TRUE (BOOLEAN)
)
)
["this",true]
$output_assembly->JSON->Data[][] = '00';
$data = $output_assembly->JSON->Data;
$data[0][] = '01';
$data[][] = '10';
$data[1][] = '11';
[["00","01"],["10","11"]]
$arr = array("this", "that");
$output_assembly->JSON->Data = $arr;
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01001000:Array ): Data = (
(0x03000000:NameValue): 0 = 'this' (CHARACTER)
(0x03000000:NameValue): 1 = 'that' (CHARACTER)
)
)
["this", "that" ]
$arr = array('first' => "1st", 'second' => "2nd");
$output_assembly->JSON->Data = $arr;
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01000000:Object ): Data = (
(0x03000000:NameValue): first = '1st' (CHARACTER)
(0x03000000:NameValue): second = '2nd' (CHARACTER)
)
)
$var1 = $output_assembly->JSON->Data['second']; // 2nd
$var2 = $output_assembly->JSON->Data['none']; // null
{"first":"1st","second":"2nd"}
$arr = array(array("a1","a2"),array("b1","b2"));
$output_assembly->JSON->Data = $arr;
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01001000:Array ): Data = (
(0x01001000:Array ): 1 = (
(0x03000000:NameValue): 1 = 'a1' (CHARACTER)
(0x03000000:NameValue): 2 = 'a2' (CHARACTER)
)
(0x01001000:Array ): 2 = (
(0x03000000:NameValue): 1 = 'b1' (CHARACTER)
(0x03000000:NameValue): 2 = 'b2' (CHARACTER)
)
)
)
[["a1","a2"],["b1","b2"]]
$arr = array("top1" => array("a1","a2"), "top2" => array("b1","b2"));
$output_assembly->JSON->Data = $arr;
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01000000:Object ): Data = (
(0x01001000:Array ):top1 = (
(0x03000000:NameValue): 1 = 'a1' (CHARACTER)
(0x03000000:NameValue): 2 = 'a2' (CHARACTER)
)
(0x01001000:Array ):top2 = (
(0x03000000:NameValue): 1 = 'b1' (CHARACTER)
(0x03000000:NameValue): 2 = 'b2' (CHARACTER)
)
)
)
{"top1":["a1","a2"],"top2":["b1","b2"]}
[["a1","a2"],["b1","b2"]]
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01001000:Array ): Data = (
(0x01001000:Array ): Item = (
(0x03000000:NameValue): Item = 'a1' (CHARACTER)
(0x03000000:NameValue): Item = 'a2' (CHARACTER)
)
(0x01001000:Array ): Item = (
(0x03000000:NameValue): Item = 'b1' (CHARACTER)
(0x03000000:NameValue): Item = 'b2' (CHARACTER)
)
)
)
output_assembly->JSON->Data[0][0] = "A1";
output_assembly->JSON->Data[1][1] = "B2";
output_assembly->JSON->Data[1][] = "New3";
[["A1","a2"],["b1","B2","new3"]]
<doc>
<cats>
<cat>thing1</cat>
<cat>thing2</cat>
</cats>
</doc>
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0xhhhhhh]
(0x01001000:Folder ): doc = (
(0x01001000:Folder ): cats = (
(0x03000000:NameValue): cat = 'thing1' (CHARACTER)
(0x03000000:NameValue): cat = 'thing2' (CHARACTER)
)
)
)
{"cats":["thing1","thing2"]}
$output_assembly->JSON->Data = $input_assembly->XMLNSC->doc;
$output_assembly->JSON->Data->cats->setType(MB_JSON_ARRAY);
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01000000:Obejct):Data = (
(0x01001000:Array ): cats = (
(0x03000000:NameValue): cat = 'thing1' (CHARACTER)
(0x03000000:NameValue): cat = 'thing2' (CHARACTER)
)
)
)
{"cat":"thing1","cat":"thing2" }
(Message):JSON = ( ['json' : 0xhhhhhh]
(0x01001000:Object ): Data = (
(0x03000000:NameValue): cat = 'thing1' (CHARACTER)
(0x03000000:NameValue): cat = 'thing2' (CHARACTER)
)
)
Dies ist eine ungültige PHP-Datenstruktur, da sie einen doppelten Schlüssel enthält, was in einem assoziativen Array nicht vorkommen darf. Als Ergebnis kann auf diese Form von JSON-Daten über einen PHPCompute-Knoten nicht zugegriffen werden und sie können nicht erstellt oder geändert werden. Um diese Art von JSON-Daten verarbeiten zu können, muss der Nachrichtenfluss entweder ESQL oder Java™ verwenden.