私はプロジェクトに取り組んでいますが、困惑する問題に遭遇しました。以下のコードは、クラス ファイルと、動作を確認するためのテスト ページです。これは、サイトをプログラミングしている他の誰かのためのものです。それ以外の場合は、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;
}
}
?>
getResults.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 に移動すると、JSON としてフォーマットされた $res1 から $res5 が返されます (これは単なるテストであり、本番環境ではこのようなことは決して行いません)。現在、「0」が出力されており、その理由を一生理解できません。foreach ループが正しく記述されていない可能性はありますか? どうぞ、あなたが提供できるどんな助けも素晴らしいでしょう!