如何将每一行数据组合在一起?

在PHP中,我想将每一行加在一起。
这是我自己的数据库的摘要示例:

c(CorporateID,CompanyName)
o(CorporateID,OutletID)
os(OutletID,StaffName)

数据:

c表:

CorporateID   CompanyName
-----------   -----------
1             A&B Company

o表:

CorporateID   OutletID
-----------   --------
1             1
1             2
1             3

操作系统表:

OutletID   StaffName
--------   ---------
1          Jeannie
1          Zoey
1          Jasmine
2          James
2          Catherine
3          Ada

PHP的一部分

$conn = new mysqli(server,dbuser,dbpw,db);
$query = "
    SELECT o.*,c.*,os.* 
    FROM Outlet o,Company c,OutletStaff os
    WHERE c.CorporateID = o.CorporateID
    AND o.OutletID = os.Outlet_ID";
$result = $conn->query($query);

$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "[") {$outp .= ",";}
    $outp .= '{"CompanyName":"'. $rs["CompanyName"].' - Outlet'. $rs["OutletID"].'",';
    $outp .= '"Worker":"'.$rs["StaffName"].'"}';
}
$outp .="]";

$conn->close();

echo($outp);

输出

  

[{“ CompanyName”:“ A&B-Outlet1”,“ Worker”:“ Jeannie”},
  {“ CompanyName”:“ A&B-Outlet1”,“ Worker”:“ Zoey”},
  {“ CompanyName”:“ A&B-Outlet1”,“ Worker”:“ Jasmine”},
  {“ CompanyName”:“ A&B-Outlet2”,“ Worker”:“ James”},
  {“ CompanyName”:“ A&B-Outlet2”,“ Worker”:“ Catherine”},
  {“ CompanyName”:“ A&B-Outlet3”,“ Worker”:“ Ada”}]

如您所见,由于该插座中的工人不同,因此存在重复的companyname

这就是我的期望:

  

[{“ CompanyName”:“ A&B-Outlet1”,“ Worker”:“ Jeannie,Zoey,Jasmine”},
  {“ CompanyName”:“ A&B-Outlet2”,“ Worker”:“ James,Catherine”},
  {“ CompanyName”:“ A&B-Outlet3”,“ Worker”:“ Ada”}]

它能够做到吗?我个人认为与PHP的第13行有关:

$outp .= '"Worker":"'.$rs["StaffName"].'"}';

也许我需要循环然后放入变量中,然后放入此输出中?
我该如何实现?

solanum 回答:如何将每一行数据组合在一起?

假设您的MySQL响应如下:

        p
            label(for="tags") Tags (Seperated by comma): 
            input(type="text" name="tags" id="tags" required autofocus)

        P   
            script(type="text/javascript")
               -  $("#image-drop-area").dropzone({ url: "/file/post" })

您可以使用唯一键简单地创建一个关联数组,如下面的代码片段所示。

$result = [
    [
        "company_name" => "ABC","worker" => "Dipesh"
    ],[
        "company_name" => "CDE","worker" => "Ramesh"
    ],"worker" => "Mukhesh"
    ]
];

然后使用php $res = []; foreach($result as $value){ $company_name = $value['company_name']; if( isset($res[$company_name]) ){ $res[$company_name] = array_merge($res[$company_name],[$value['worker']]); }else{ $res[$company_name] = [$value['worker']]; } } 函数轻松组合键和值以获得所需的响应。

implode

对于$result = []; foreach($res as $key => $val){ $result[] = [ 'company_name' => $key,'worker' => implode($val,",") ]; } 的响应,您只需调用JSON即可获得所需的输出。

json_encode($result)
本文链接:https://www.f2er.com/3135721.html

大家都在问