我的数据库中有多行返回数据结果。我遇到的问题是,对于某些项目我只需要一行,而对于其他项目我需要多行,而不需要为每个需要的项目执行多个数据库查询,我以为我会重建数据数组。
我最终的目的是将数组中的每个项目用作字符串。如果最后两个项目,产品和位置有多行,那么我需要将它们作为字符串返回。
处理此问题的最佳方法是什么?
Array
(
[0] => Array
(
[cid] => one line
[model] => one line
[mfgr] => one line
[color] => one line
[orderid] => one line
[product] => many lines
[location] => many lines
)
[1] => Array
(
.. repeats for as many rows as were found
)
)
让我重新解释一下这个问题。您在上面看到的数组是从我的foreach生成的数组。数组键[0]保存结果中的所有数据。数组键[1]只是重复数据。列1-5需要单行。第6栏和第6栏7是我需要多行的地方,因此是重复的数组键。
如果我必须按照我需要的方式重建这个数组,它看起来像这样:
Array
(
[single] => Array
(
[cid] => one line
[model] => one line
[mfgr] => one line
[color] => one line
[orderid] => one line
[product] => Array
(
[0] => many lines
[1] => many lines
)
[location] => Array
(
[0] => many lines
[1] => many lines
)
)
)
答案 0 :(得分:1)
您想要做的分组是数据库最擅长的事情。
查找GROUP_CONCAT
here的MySQL文档。
答案 1 :(得分:1)
如果我理解你需要什么,这就是
foreach($array as $key => $value) {
if(is_array($value['product'])) {
$array[$key]['product'] = implode(', ', $value['product']);
}
if(is_array($value['location'])) {
$array[$key]['location'] = implode(', ', $value['location']);
}
}
这会将product
和location
中的“多行”变为带逗号的单个字符串。