Если это код 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);
}