PHP 配列は連想マップであり、整数またはストリングをキーとして使用できます。
従来の整数のインデックス配列と同様の操作を得るために、整数キーを自動的に昇順で連続的に割り振ることができます。 PHP は空のインデックス演算子 ([]) をサポートしています。これを代入の左側で使用すると、配列に項目を 1 つ追加できます。その場合には、現在の最大のインデックス値に 1 を追加した整数インデックスが使用されます。
PHP 連想配列は、JSON オブジェクト構造としてモデル化されます。JSON 配列は匿名だからです。
PHPCompute ノードは、PHP 定数 MB_JSON_ARRAY をサポートしています。ユーザーは MbElement setType() メソッドでこの定数を使用して、既存の JSON オブジェクト・エレメントを JSON 配列に変更できます。 この方式は通常、別のパーサー・ドメインにより所有されているツリーからコピーすることによりエレメントが作成されている場合に使用されます。
ツリー内の JSON 配列項目の既存の値にアクセスするまたは変更するには、配列インデックス ([index]) を使用して必要な項目を選択します。 JSON 配列項目は、[index] 形式を使用して JSON ツリー内に作成することはできません。これを試みると、例外がスローされます。
->address['street']
以下の例は、JSON で PHP 配列を使用する方法を示しています。
$strVar = "this";
$boolVar = true;
$output_assembly->JSON->Data[] = $strVar;
$output_assembly->JSON->Data[] = $boolVar;
配列に追加する場合には、配列のインデックス付加演算子 ([]) を使用する必要があります。[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)
)
)
これは、連想配列に存在できない重複キーを含むため、無効な PHP データ構造です。 その結果、この形式の JSON データは PHPCompute ノードからのアクセス、作成、および変更ができません。 このタイプの JSON データを処理するためには、メッセージ・フローで ESQL または Java™ を使用する必要があります。