我有一个CFResponse,我想解析成这样的数组:
$response = $this->scan($query);
$array = $response->body->Items->to_array();
print_r($array);
由于某种原因,这给了我一个空的CFArray,而
$response->body->Items->to_json();
另一方面给了我这个:
{"userID":{"S":"someemail@me.com"},"password":{"S":"secretPassword"}}
这只是第一行。 但是,这是我通过$ response-> body;
获得的CFSimpleXML Object ( [ConsumedCapacityUnits] => 0.5 [Count] => 2 [Items] => Array ( [0] => CFSimpleXML Object ( [userID] => CFSimpleXML Object ( [S] => someemail@me.com ) [password] => CFSimpleXML Object ( [S] => secretPassword ) ) [1] => CFSimpleXML Object ( [userID] => CFSimpleXML Object ( [S] => somemoreemail@me.com ) [password] => CFSimpleXML Object ( [S] => secretPassword ) ) ) [ScannedCount] => 2 )
正如您在此处所见,Items是一个数组。它是一个SimpleXMLIterator对象。 有两行被返回。
通过调用Items,我只获得第一个对象。如何将所有子节点解析为数组,或者至少制作一个json字符串?我试过getChildren(),但没有用。
另外,为什么to_array()
没有工作?
答案 0 :(得分:1)
$query_response = $db->query(array(
'TableName' => $tableName,
'HashKeyValue' => $db->attribute($peer)
));
if (!$query_response->isOK()){
die(json_encode(CFUtilities::convert_response_to_array($query_response)));
}
$ps = array();
foreach ($query_response->body->Items as $item)
{
if (empty($item)) continue;
$p = array();
$p['P'] = (string) $item->p->S;
$p['TIME'] = (integer) $item->TIME->N;
$p['STATUS'] = (string) $item->STATUS->S;
$p['ICON'] = (string) $v->ICON->S;
array_push($ps,$p);
}
echo json_encode($ps);