因此,我有一个数据库表,其中将试剂盒的成分保存在多行中。这意味着每一行具有相同的KitID,但每一行上都有不同的项(如您在图像上看到的)。
我想要实现的是在数据表中显示一个Kittype,其中所有组件都在一行中(如果我使用foreach,那么我将获得具有相同ID的多个KitType,而不仅仅是一个)。因此,我的预期结果应如下所示:KitTypeID = 4,ComponentID = 27、28、29和CompAmount = 20、12、23。
我的问题是,是否有一种方法可以让我合并行而不会覆盖componentID和CompAmount。 我无法向数据库中添加更多列,其结构必须像这样。
答案 0 :(得分:0)
我已经找到了解决方案。
$results = array();
foreach($KitTypes as $row => $field) {
//check if KitTypeID is already set and store the index value it exist within
$existing_index = NULL;
foreach($results as $result_row => $result_field) {
if ($result_field['KitTypeID'] == $field['KitTypeID']) {
$existing_index = $result_row;
break;
}
}
if (isset($existing_index)) {
//the KitTypeID already exist, so add to the existing KitTypeID
$dataArrayIndex = count($results[$existing_index]['Components']);
$results[$existing_index]['Components'][$dataArrayIndex]['Product_Name'] = $field['Product_Name'];
$results[$existing_index]['Components'][$dataArrayIndex]['CompAmount'] = $field['CompAmount'];
}
else {
//the KitTypeID does not exist, create it
$results_index = count($results);
$results[$results_index]['KitTypeID'] = $field['KitTypeID'];
$results[$results_index]['Components'][0]['Product_Name'] = $field['Product_Name'];
$results[$results_index]['Components'][0]['CompAmount'] = $field['CompAmount'];
}
}