Matrizes PHP são mapas associativos, nos quais a chave pode ser um número inteiro ou uma sequência.
Chaves de número inteiro podem ser alocadas automaticamente em ordem sequencial ascendente para funcionar da mesma maneira que uma matriz tradicional indexada por número inteiro. O PHP suporta um operador de índice vazio ([]), que pode ser usado no lado esquerdo de uma designação para incluir um item na matriz, usando um índice de número inteiro com o valor do índice atual mais alto mais 1.
Matrizes associativas PHP são modeladas como estruturas de objetos JSON, visto que matrizes JSON são anônimas.
O nó PHPCompute suporta a constante PHP MB_JSON_ARRAY, que você pode usar no método MbElement setType() para alterar um elemento de objeto JSON existente em uma matriz JSON. Esse método normalmente é usado quando elementos foram criados copiando de uma árvore de propriedade de outro domínio do analisador.
Para acessar ou alterar um valor existente de um item de matriz JSON em uma árvore, é possível usar um índice de matriz ([index]) para selecionar o item obrigatório. Os itens de matriz JSON não podem ser criados na árvore JSON usando o formato [index]; as tentativas de fazer isso resultam em uma exceção sendo emitida.
->address['street']
Os exemplos a seguir demonstram como é possível usar matrizes PHP com JSON:
$strVar = "this";
$boolVar = true;
$output_assembly->JSON->Data[] = $strVar;
$output_assembly->JSON->Data[] = $boolVar;
Você deve usar o operador de índice de anexo de matriz ([]) para anexar a uma matriz; não é possível usar o formato [index].
(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)
)
)
Essa é uma estrutura de dados PHP inválida porque tem uma chave duplicada, que não pode existir em uma matriz associativa. Como resultado, esse formulário de dados JSON não pode ser acessado, criado ou modificado em um nó PHPCompute. Para processar esse tipo de dados JSON, o fluxo de mensagens deve usar ESQL ou Java™.