我正在做一个项目,我遇到了一个让我难过的问题。下面的代码是一个类文件和一个测试页面,以确保它正常工作。它适用于正在对该站点进行编程的其他人,否则我会以不同的方式对 JSON 输出进行编码。基本上,实现它的人只需从数据库中提取一堆数据(如下所示),然后循环遍历,为每个结果实例化一个类对象,并将每个实例插入一个数组,然后将数组传递给 printJson 函数,它将打印 JSON 字符串。这是我所拥有的:
结果.php
<?php
class Result
{
public $Category = NULL;
public $Title = NULL;
public $Price = NULL;
public function __construct($category, $title, $price)
{
$this->Category = $category;
$this->Title = $title;
$this->Price = $price;
}
public static function printJson($arrayOfResults)
{
$output = '{"results": [';
foreach ($arrayOfResults as $result)
{
$output += '{"category": "' . $result->Category . '",';
$output += '"title": "' . $result->Title . '",';
$output += '"price": "' . $result->Price . '",';
$output += '},';
}
$output = substr($output, 0, -1);
$output += ']}';
return $output;
}
}
?>
获取结果.php
<?php
require_once('Result.php');
$res1 = new Result('food', 'Chicken Fingers', 5.95);
$res2 = new Result('food', 'Hamburger', 5.95);
$res3 = new Result('drink', 'Coke', 1);
$res4 = new Result('drink', 'Coffee', 2);
$res5 = new Result('food', 'Cheeseburger', 6.95);
$x = $_GET['x'];
if ($x == 1)
{
$array = array($res1);
echo Result::printJson($array);
}
if ($x == 2)
{
$array = array($res1, $res2);
echo Result::printJson($array);
}
if ($x == 3)
{
$array = array($res1, $res2, $res3);
echo Result::printJson($array);
}
if ($x == 5)
{
$array = array($res1, $res2, $res3, $res4, $res5);
echo Result::printJson($array);
}
?>
最终结果是,如果我访问 getResults.php?x=5,它将返回 $res1 到 $res5(同样,这只是为了测试,我永远不会在生产中做这样的事情)格式为 JSON。现在,我得到了“0”的输出,我一辈子都无法弄清楚为什么。难道我的 foreach 循环写得不正确吗?拜托,你能提供的任何帮助都会很棒!