您好,我在 firestore 中有以下数据库,在此代码中我可以获取“ride”集合的文档。
$db = new FirestoreClient([
'projectId' => 'taxi-17b9c',
]);
$citiesRef = $db->collection('ride');
$documents = $citiesRef->documents();
foreach ($documents as $document) {
if ($document->exists()) {
print json_encode($document->data(), JSON_PRETTY_PRINT);
}
基本上我的问题是:为什么当我返回 时$document-> data()
,我只有单个文档的 json,但是当我执行print_r ($document-> data())
or 时json_encode ($document-> data())
,信息是完整的。
我想要的是遍历“ride”集合并以 json 格式获取我拥有的文档数据。
我需要添加什么?谢谢!干杯!
如果这是您的服务器 php 代码并且您只将“print”替换为“return”,则您的函数将仅返回data()
一个现有的$document
,在您的情况下仅返回data()
第一个现有的$document
.
如果这是您的所有代码,您可以尝试将“print”替换为“echo”:
$db = new FirestoreClient([
'projectId' => 'taxi-17b9c',
]);
$citiesRef = $db->collection('ride');
$documents = $citiesRef->documents();
foreach ($documents as $document) {
if ($document->exists()) {
echo json_encode($document->data(), JSON_PRETTY_PRINT);
}
}
您还可以$document
在新对象或数组中收集现有对象,以便将其作为一个字符串返回,如以下简单示例所示。
<?php
$testObjs = array(
'object1' => array('info'=>'taxi-17b9c', "foo"=>"bar"),
'object2' => array('info'=>'taxi-17b9c'),
'object3' => array('info'=>'taxi-23', "foo"=>"bla")
);
echo "echo as single object strings: \n";
foreach ($testObjs as $obj) {
if(isset($obj["foo"])){
echo json_encode($obj, JSON_PRETTY_PRINT);
}
}
echo "\nexample return as one string array: \n";
echo showReturn($testObjs);
function showReturn($testObjs){
$new_testObjs = array();
foreach ($testObjs as $obj) {
if(isset($obj["foo"])){
array_push($new_testObjs, $obj);
}
}
return json_encode($new_testObjs, JSON_PRETTY_PRINT);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句