我有自动查询,我使用代码点火器, 结构表组织具有字段ID和名称。
$get_organization = $this->db->query("SELECT id,name FROM organization")->result_array();
如果我print_r变量$ get_organization如下:
Array (
[0] => Array
(
[id] => 1
[name] => orgone
)
[1] => Array
(
[id] => 2
[name] => orgtwo
)
)
为了获得总和自动,我编写如下代码:
foreach($get_organization as $bit){
$id=$bit['id'];
$name=preg_replace("/[^a-zA-Z0-9\-]/", "", $bit['name']);
$getcabang[] = "SUM(CASE WHEN org_id = '$id' THEN total END) as $name";
}
$cabang = implode(',',$getcabang);
在表中,我们希望使用字段 id,total,tanggal_laporan,org_id 搜索结果 laporan 。
$query = $this->db->query("SELECT id, $cabang, tanggal_laporan FROM laporan GROUP BY tanggal_laporan")->result_array();
然后如果我print_r变量$ query我的结果如下:
Array (
[0] => Array
(
[orgone] => 218000
[orgtwo] => 112000
[tanggal_laporan] => 2012-11-04
)
[1] => Array
(
[orgone] => 198000
[orgtwo] => 411000
[tanggal_laporan] => 2012-11-05
)
[2] => Array
(
[orgone] => 513000
[orgtwo] => 147000
[tanggal_laporan] => 2012-11-06
)
)
所以我的问题,我想自动结果如下:
$array_transform = array(
[orgone] => "218000, 198000, 411000",
[orgtwo] => "112000, 411000, 147000",
[tanggal_laporan] => "2012-11-04, 2012-11-05, 2012-11-06",
);
当它来到表组织的另一行时,例如一行名为= orgthree,所以结果我想要:
$array_transform = array(
[orgone] => "218000, 198000, 411000",
[orgtwo] => "112000, 411000, 147000",
[orgthree] => "0, 0, 0",
[tanggal_laporan] => "2012-11-04, 2012-11-05, 2012-11-06",
);
感谢。
答案 0 :(得分:2)
更改问题后更新了答案。这将把字段处理成你想要的结构,而不必对字段名称进行硬编码。
<强> Demo 强>
$array_transform = array();
foreach($array_from_mysql as $row)
{
foreach($row as $field => $value)
{
if(isset($array_transform[$field]))
{
$array_transform[$field][] = $value;
}
else
{
$array_transform[$field] = array($value);
}
}
}
print_r($array_transform);
答案 1 :(得分:1)
$result = array();
foreach ($array_from_mysql as $sub_array) {
$result['total'][] = $sub_array['total'];
$result['tanggal_laporan'][] = $sub_array['tanggal_laporan'];
}
答案 2 :(得分:1)
如果它来自SQL查询(如变量名所示),您可以使用GROUP BY
查询GROUP_CONCAT
来获取数据库中所需格式的数据,而无需PHP做任何聪明的事。
我对实际查询的帮助远不止于此,因为您没有向我们展示原始查询,但请在MySQL手册上阅读更多相关内容:http://dev.mysql.com/doc/refman/5.0/en//group-by-functions.html
希望有所帮助。
答案 3 :(得分:0)
这应该有效:
<?php
$array_transform = array();
foreach ($array_from_mysql as $row) {
foreach ($row as $name => $value) {
if (!isset($array_transform[$name])) {
$array_transform[$name] = array();
}
$array_transform[$name][] = $value;
}
}
?>