【问题标题】:array with double index (from 2 other arrays)具有双索引的数组(来自其他 2 个数组)
【发布时间】:2016-02-13 22:22:14
【问题描述】:

我的数据库中有这张表:

 table
 ----------
 reportID (fK)
 cityID(fK)
 parameterID(fK)
 value 

同一个城市可以在同一份报告中出现更多次。

我想检索这些值并将它们(稍后在文件中)作为 $value[cityID][parameterID] 回显,即为 cityID=100 的 parameterID=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]

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

谢谢!!

【问题讨论】:

  • 您想通过cityIDparameterID 列从表格行中获取“值”吗?

标签: php mysql


【解决方案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];

【讨论】:

  • 谢谢!我编辑了我的问题......你认为是否有可能为同一个reportID拥有一个包含所有cityID的数组,包括在同一个报告中出现更多次的城市?即数组(100,120,133,100,180...)
  • 不客气。至于您的编辑:您可以添加额外的数组$reportCities = [];,然后在循环中累积指定reportId$reportCities[] = $row['cityID'] 的所有城市ID(甚至是重复的)。
  • 对不起罗马,但如果我的报告中有两次城市,$selectvalue_array 不起作用:如果 $selectvalue_array[100][3] 出现 2 次,具有不同的值,系统如何知道我指的是哪一个吗?
  • 我能说什么,你没有正确理解我的意思。您不能在 reportId -> cityId -> parameterId -> value 等层次结构中使用重复的 cityId 值,因为 PHP 中的数组不允许重复键!这就是为什么我在之前的评论中建议了一个额外的数组$reportCities = [];。要有意识。
  • 对不起 Roman,但我不明白如何将 $selectvalue_array$reportCities = [] 结合起来制作一个像我编辑的问题一样的表格。您可以使用代码编辑答案吗?对我真的很有帮助,谢谢!! (我在网上到处寻找解释如何回显表格的教程,但我找不到......我可能没有使用正确的关键字进行搜索。我想我可以使用 $selectvalue_array[][] 但由于重复的城市,现在我回到了第一广场......)。谢谢!
猜你喜欢
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
相关资源
最近更新 更多