我正在尝试构建一个查询我的数据库然后格式化输出的页面,以便另一个webservice/page
可以访问数据。
理想情况下,我想探索以JSON格式提供数据,但这不起作用。我遇到的另一个比JSON更不重要的问题是,如果$reportsResult
中有3条记录,则只显示最后一条记录。
任何有帮助的人请。我还需要print_r
外部网页来检索数据还是有更好的方法?
class Pupil {
public $FirstName = "";
public $LastName = "";
}
foreach($reportsResult->getRecords() as $reportRecord) {
$Pupil = new Pupil();
$Pupil->FirstName = $reportRecord->getField('FName');
$Pupil->LastName = $reportRecord->getField('SName');
}
json_encode($Pupil);
确定设法弄清楚如何从循环中获取所有记录,但是当我执行print_r时它仍然没有以json格式显示 - 我错过了什么?
$AllPupils = array();
foreach($reportsResult->getRecords() as $reportRecord)
{
$Pupil = new Pupil();
$Pupil->FamID = $reportRecord->getField('FName');
$Pupil->ChildName = $reportRecord->getField('SName');
array_push($AllPupils, $Pupil);
}
json_encode($AllPupils);
答案 0 :(得分:2)
每当你的foreach循环再次开始时,它将覆盖你的$Pupil
变量。
请尝试使用数组:
$Pupil = array()
$i = 0;
foreach($reportsResult->getRecords() as $reportRecord) {
$Pupil[$i] = new Pupil();
$Pupil[$i]->FirstName = $reportRecord->getField('FName');
$Pupil[$i]->LastName = $reportRecord->getField('SName');
$i++;
}
echo json_encode($Pupil);
编辑: mikemackintosh的解决方案也应该有效,并且可能会更快一些(取决于你的foreach循环的大小)。
要显示您echo
数据所需的结果(不仅仅是json_encode
)。
答案 1 :(得分:0)
您可能会遇到问题,因为json_encode
不会处理整个对象。为此,您可能希望序列化$Pupil
对象。
下面的内容可能对您有用。它会将值分配给返回的数组,这将允许json_encode
正常执行:
class Pupil {
public $FirstName = "";
public $LastName = "";
public function getAttr(){
return array("FirstName" => $this->FirstName, "LastName" => $this->LastName);
}
}
$json = array();
foreach($reportsResult->getRecords() as $reportRecord) {
$Pupil = new Pupil();
$Pupil->FirstName = $reportRecord->getField('FName');
$Pupil->LastName = $reportRecord->getField('SName');
$json[] = $Pupil->getAttr();
}
echo json_encode($json);
答案 2 :(得分:0)
我不确定为什么你定义了那个类,但你知道你的每个人都有类似的东西
foreach ($reportsResult->getRecords() as $key => $record) {
$data[$key]['firstname'] = $record->getField('Fname');
$data[$key]['lastname'] = $record->getField('Sname');
}
然后你可以使用print_r检查最终的数组 输出时你可以简单地做一个打印json_encode($ data),它会给你一个包含数据数组中所有项目的json字符串。
答案 3 :(得分:0)
在php(至少)中,json_encode将数组作为参数 因此,您应该在类中添加构造函数
function __construct($first, $last)
{
this.$FirstName = $first;
this.$LastName = $last;
}
和一个用于获取全名作为数组,准备好jsoned
function getNameArray()
{
$nameArray = array();
$nameArray['firstName'] = this.$FirstName;
$nameArray['lastName'] = this.$LastName;
return $nameArray;
}
然后在那个foreach中你用所有的学生构建另一个数组
$pupils = array();
foreach (bla bla)
{
$first = $reportRecord->getField('FName');
$last = $reportRecord->getField('SName');
$Pupil = new Pupil($first, $last);
array_push($pupils, $pupil.getNameArray());
}
最后,你已经准备好了一切
json_encode($pupils);
我确信还有其他方法可以调试你的东西,我也主要使用print_r。