【发布时间】:2017-06-14 07:46:26
【问题描述】:
json 对象作为变量 $results 中的输出出现
Array ( [ts] => MongoTimestamp Object ( [sec] => 1497334764 [inc] => 1 ) [t] => MongoInt64 Object ( [value] => 1 ) [h] => MongoInt64 Object ( [value] => -3885623284897060533 ) [v] => 2 [op] => i [ns] => mgl.triggersTbl [o] => Array ( [_id] => MongoId Object ( [$id] => 593f83ec1d7859cc0f000029 ) [Name] => Ahmad [Address] => Delhi ) )
Array ( [ts] => MongoTimestamp Object ( [sec] => 1497349628 [inc] => 1 ) [t] => MongoInt64 Object ( [value] => 8 ) [h] => MongoInt64 Object ( [value] => -3083419979530819825 ) [v] => 2 [op] => i [ns] => mgl.triggersTbl [o] => Array ( [_id] => MongoId Object ( [$id] => 593fbdfc1d78591819000029 ) [Name] => Nehal [Address] => Mumbai ) )
Array ( [ts] => MongoTimestamp Object ( [sec] => 1497428148 [inc] => 1 ) [t] => MongoInt64 Object ( [value] => 9 ) [h] => MongoInt64 Object ( [value] => -660915868390613413 ) [v] => 2 [op] => i [ns] => mgl.triggersTbl [o] => Array ( [_id] => MongoId Object ( [$id] => 5940f0b41d78591414000029 ) [Name] => Seema [Address] => Mumbai ) )
代码是
$cursor = $c->find(array('ns'=> 'mgl.triggersTbl', 'op' => 'i'));
// $cursor->timeout(-1);
$cursor->tailable(true);
//$cursor->awaitData(true);
while ($cursor->hasNext()) {
$cursor->timeout(-1);
try
{
$results =array();
$results = $cursor->getNext();
var_dump($results);
}
现在我正在尝试一一获取这些值,以使其看起来像。
foreach ($results as $key)
{
foreach ($key as $p => $res)
{
echo "Timestamp"." : ". $key["sec"]."<br/>";
echo "Name"." :".$res["Name"]."<br/>";
echo "Address"." :".$res["Address"];
}
}
此代码不起作用。它会抛出错误消息。
" 不能使用 MongoTimestamp 类型的对象作为 " echo "Timestamp" 中的数组。" : "。 $key["sec"]."
";"
如果我使用
foreach ($results as $res)
{
echo "Name"." :".$res["Name"]."<br/>";
echo "Address"." :".$res["Address"];
}
仍然抛出错误信息
请帮忙!!!
【问题讨论】:
-
什么错误信息?
-
为什么是两个循环?使用
foreach ($results as $p => $res)。在内循环中使用 $key 似乎也很奇怪。 -
对象数组。您需要使用
->来访问该属性,而不是索引。 -
我试过 foreach ($results as $p => $res) { echo "Name"." :".$res["Name"]."
"; echo "地址"." :".$res["地址"]; }... 它仍然会抛出该错误消息 -
你能告诉我怎么做吗