带双索引的数组(来自其他2个数组)

时间:2016-02-13 22:22:14

标签: php mysql

我在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]

......   .......................      ....................

谢谢!

1 个答案:

答案 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];