我想我会需要某种多维数组。我只是不知道如何以一种简单易懂的格式来获取它。基本上我有一堆发票去特定的公园。我想要的最终结果是在单个公园上显示多张发票的公园,所以我可以轻松地循环。我有多个SQL问题得到变量,但我得到了它归结为这样:PHP - 将一个值与多个值配对的最佳方法?
$sql = "SELECT * FROM INVOICE WHERE ID=$ids[$i]";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
//invoice variables go here
//row is invoices
$invoiceapplication = $row['APPLICATION'];
$invoiceid = $row['ID'];
$invoicedate = $row['DATE'];
$late = $row['LATE'];
$amountowed = '';
$amountowed = $row['AMOUNTOWED'];
$originalamountowed = $row['AMOUNTOWED'];
//grabbing application park id to get all the parks.
$sqlapplication = "SELECT * FROM APPLICATION WHERE ID=$invoiceapplication";
$resultapplication = $conn->query($sqlapplication);
if($resultapplication->num_rows > 0){
$rowapplication = $resultapplication->fetch_assoc();
//rowapplication is applications
//application variables here
$applicationparkid = $rowapplication['MOBILEPARK'];
//end app variables.
}
//finished grabbing application park id to get all the parks.
echo $invoiceid.' is park '.$applicationparkid.'<br>';
if(in_array($applicationparkid,$allparkarray)){
//if already contained in the allparkarray
} else {
array_push($allparkarray,$applicationparkid);
}
}
$i++;
}
在这一切的到底是我的输出:
901 is park 38
1362 is park 38
1595 is park 38
1825 is park 38
2093 is park 38
4766 is park 38
17018 is park 61
17011 is park 66
17015 is park 66
17014 is park 66
17013 is park 66
17012 is park 66
理想......我想有一个多维数组这样的输出:
38 => (901,1362,1595,1825,2093,4766)
61 => (17018)
66 => (17011,17015,17014,17013,17012)
记住...这是完全可能的发票是“乱序”在它的输出,所以如果突然不同号码之间出现了......我基本上不能依靠简单的0,1,2,3系统来配对。
我相信有一个简单的方法来做到这一点,我只是不能为我的生活弄明白。
你可以使用'sql group by'和'concat'函数。 https://stackoverflow.com/questions/149772/how-to-use-group-by-to-concatenate-strings-in-mysql – Keloo
即使他们在多个不同的表?我必须建立一个从INVOICE到表格应用程序的关联,然后链接到PARK表格。 – sblumberg
[Little Bobby Tables](http://bobby-tables.com/)批准此代码。 – bishop