我從我的 PHP 得到這個結果:
{"risultato":"1","ris":[{"pda":"763,41","num1":"86,86","num2":"21,18","num3":" 178603,201535"}]}
如果我想回傳這樣的結果,我需要做什么?
{"risultato":"1","ris":[{"pda":"763","num1":"86","num2":"21","num3":"178603"},{" pda":"41","num1":"86","num2":"18","num3":"201535"}]}
這是我的PHP代碼:
$stmtcarte = $connection->prepare("SELECT GROUP_CONCAT(concat.pda) as pda, GROUP_CONCAT(concat.num1) as num1,GROUP_CONCAT(concat.num2) as num2, GROUP_CONCAT(concat.num3) as num3 FROM (SELECT pda, num1, num2, num3, FROM giocatori WHERE categoria=? ORDER BY RAND() LIMIT 2 ) concat");
$categoria=$categoriaselezionata;
$stmtcarte->bind_param("s",$categoria);
$stmtcarte->execute();
$risultatocarte = $stmtcarte->get_result();
$result=array("risultato"=>"1", "ris"=>"");
while($rispostacarte=$risultatocarte->fetch_assoc()){
$result['ris']=array($rispostacarte);
echo json_encode($result);
}
$stmtcarte->close();
uj5u.com熱心網友回復:
我確信有一種Mysql方法可以解決您的問題,因此,任何其他方向肯定都不是最好的主意。但是,我仍然更喜歡 PHP 片段來獲得您想要的回應。
假設您得到的$result變數與您在問題中顯示的方式完全相同。這是我想出的:
<?php
$ris = $result["ris"][0];
$tempRis = [];
foreach ($ris as $key => $value) {
$explodedArray = explode(",", $value);
$length = count($explodedArray);
for ($i=0; $i < $length ; $i ) {
$tempRis[$i][$key] = $explodedArray[$i];
}
}
$result["ris"][0] = $tempRis;
print_r($result);
?>
結果將是:
Array
(
[risultato] => 1
[ris] => Array
(
[0] => Array
(
[0] => Array
(
[pda] => 763
[num1] => 86
[num2] => 21
[num3] => 178603
)
[1] => Array
(
[pda] => 41
[num1] => 86
[num2] => 18
[num3] => 201535
)
)
)
)
uj5u.com熱心網友回復:
group_concat 是你的問題。去掉它。它所要做的就是分解分隔字串以將其放入陣列中,然后必須將所有內容重新構建為具有不同結構的新陣列。
不確定該子查詢的用途。我認為直接選擇將是您所需要的。即使您確實想使用 group_concat,您也不需要子查詢,我認為您不會這樣做。
這也不需要復雜的陣列處理。您所要做的就是將結果集中的每一行推送到 $ris 陣列,因為 fetch_assoc() 已經回傳了一個包含鍵和值的(關聯)陣列。
$stmtcarte = $connection->prepare("
SELECT pda, num1, num2, num3
FROM giocatori WHERE categoria=?
ORDER BY RAND() LIMIT 2
");
$categoria = $categoriaselezionata;
$stmtcarte->bind_param("s",$categoria);
$stmtcarte->execute();
$risultatocarte = $stmtcarte->get_result();
$result = array("risultato"=>"1", "ris"=>array());
while($rispostacarte = $risultatocarte->fetch_assoc()){
$result['ris'][] = $rispostacarte;
}
$stmtcarte->close();
echo json_encode($result);
如果您使用的是 php >= 5.4,則不需要使用 array()。您可以使用 [] 代替。這將改變這一行:
$result = array("risultato"=>"1", "ris"=>array());
對此:
$result = ["risultato"=>"1", "ris"=>[]];
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/421710.html
標籤:
