我第一次尝试使用json编码,需要了解一下我做错了什么。
它应该是这样的:
{teams:[[“2147483647”,“9”],[“2147483647”,“6”],[“2147483647”,“4”],[“11”,“2147483647”],[“5 “,”2147483647“],[”12“,”8“],[”10“,”3“],[”2147483647“,”7“],],结果:[[[[0,1], [0,1],[0,1],[1,0],[1,0],[0,0],[0,0],[0,1],],[[0,0] ,[0,0],[0,0],[0,0],],[[0,0],[0,0],],[[0,0],[0,0]]] ]}
但是返回的数据如下所示: -
{ “团队”:[[ “2147483647”, “10”, “5”, “12”, “11”, “2147483647”, “2147483647”, “2147483647”],[ “7”,“3 ”, “2147483647”, “8”, “2147483647”, “4”, “6”, “9”]], “结果”:[[ “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”],[ “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”] ]}
代码:
public function getAutoCompleteData($tournID, $db)
{
$max = $this->max($tournID);
$one = $this->tourn_info("1on1", $tournID);
$total_matches = $max;
$after_matches = $max / 2;
$matches = $db->query($this->select("*", "matches", "leagueID='{$tournID}' AND league='tourn'"));
while ($row = $db->fetchAssoc($matches)) {
$clan1 = $this->getname($row['clan1'], $tournID, "tourn", $ac = NULL, 1, 1, $wc2 = 0);
$clan2 = $this->getname($row['clan2'], $tournID, "tourn", $ac = NULL, 1, 1, $wc2 = 1);
if ($row['matchno'] <= $after_matches) {
$clan_one[] = $row['clan1'];
$clan_two[] = $row['clan2'];
$score_one[] = $row['score1'];
$score_two[] = $row['score2'];
}
}
$data = array(
'teams' => array(
$clan_one,
$clan_two
),
'results' => array(
$score_one,
$score_two
)
);
return $data;
}
如果它显示团队,它应该每两个团队关闭括号]
?
希望有人可以提供帮助。
答案 0 :(得分:0)
不是说这会解决您的问题,但它可以帮助您理解PHP。
class mustBeAClass{
protected function max($tnid){
// must have this function - can be public for outside method use
}
protected function tourn_info($typ, $tnid){
// must have this function - can be public for outside method use
}
protected function getname($arg0, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6 = 0){
/* must have this function - can be public for outside method use
notice that $arg6 is how you assign default to arguments */
}
public function getAutoCompleteData($tournID, $db){
$db->open();
$max = $this->max($tournID); $one = $this->tourn_info("1on1", $tournID);
// what is the point of this ---->>>> $total_matches = $max;
$after_matches = $max / 2;
// notice query issue below
$matches = $db->query("SELECT * FROM matches WHERE leagueID ='$tournID' && league='tourn'"));
// while loop has problems
if($matches->num_rows < 1){
die('You have no matches');
}
else{
while($row = $db->fetch_assoc()){
$clan1 = $this->getname($row['clan1'], $tournID, 'tourn', null, 1, 1, 0);
$clan2 = $this->getname($row['clan2'], $tournID, 'tourn', null, 1, 1, 1);
if($row['matchno'] <= $after_matches) {
$clan_one[] = $row['clan1'];
$clan_two[] = $row['clan2'];
$score_one[] = $row['score1'];
$score_two[] = $row['score2'];
}
}
$data = array(
'teams' => array($clan_one, $clan_two),
'results' => array($score_one, $score_two)
);
}
$matches->free(); $db->close();
return $data;
}
}
$cls = new mustBeAClass;
echo json_encode($cls->getAutoCompleteData($tournId, $db));
当然使用$tournId
的正确值和new mysqli(/*args*/)
的{{1}}。