我在db中有这个表:
table
----------
reportID (fK)
cityID(fK)
parameterID(fK)
value
同一个城市可以在同一报告中出现更多次。
我想检索值并将它们(稍后在文件中)作为$ value [cityID] [parameterID]回显,即对于cityID = 100的参数ID = 3的回显值我只写了
echo $value[100][3]
到目前为止我做的是
SELECT * FROM table WHERE reportID=##
while($row = $result->fetch_assoc()) {
$selectcityID_array[] = (isset ($row['cityID']) ? $row['cityID'] : "");
$selectparameterID_array[] = (isset ($row['parameterID']) ? $row['parameterID'] : "");
$selectvalue_array[] = (isset ($row['value']) ? $row['value'] : "");
}
如何现在组合3个阵列?可能有一个array_combine函数?
array_combine($selectvalue_array , ($selectcityID_array, $selectparameterID_array);
修改
Ps始终在
之后 SELECT * FROM table WHERE reportID=##
是否可以为同一个reportID创建一个包含所有cityID的数组,包括在同一报告中计算更多次数的城市?
即数组(100,120,133,100,180 ......)
我尝试过array_unique函数,但是它删除了不止一次的城市。我也尝试过array_chunk,但没有运气......
我需要回应:
CITY PARAMETER 1 PARAMETER 2
cityID $value[cityID][parameterID] $value[cityID][parameterID]
cityID $value[cityID][parameterID] $value[cityID][parameterID]
...... ....................... ....................
谢谢!
答案 0 :(得分:1)
更改您的代码,如下所示:
...
$selectvalue_array = [];
while ($row = $result->fetch_assoc()) {
if (!isset($selectvalue_array[$row['cityID']])) {
$selectvalue_array[$row['cityID']] = [];
}
$selectvalue_array[$row['cityID']][$row['parameterID']] = $row['value'];
}
...
现在,您可以通过以下方式访问某个行值:
// of course, if there is confidence that '100' as cityId and '3' as parameterId exist
echo $selectvalue_array[100][3];