douyanguo7964 2019-07-13 18:43
浏览 123
已采纳

在PHP html中显示数组而不重复行

I have the following problem, it turns out that I have the following arrangement:

$array85 = array(
            0=> array(
                     "id"=> "15",
                     "estilo"=> "0053",
                     "codigo"=>  "4444444.23",
                     "color"=> "verde",
                     "punto"=>  "23" ,
                     "material"=>  "vacuno" ,
                     "precio"=>  "130" ,
                     "stock_vendido"=> (2),
                     "total"=> "260" ,
                ),
            1=> array(
                     "id"=> "16" ,
                     "estilo"=> "0053" ,
                     "codigo"=> "4444444.25" ,
                     "color"=>  "verde" ,
                     "punto"=> "25" ,
                     "material"=> "vacuno" ,
                     "precio"=> "130" ,
                    "stock_vendido"=> (1) ,
                     "total"=>  "130" ,
                ),
            2=> array(
                     "id"=> "10" ,
                    "estilo"=>  "0058" ,
                     "codigo"=>"1232323.23" ,
                     "color"=> "rojo" ,
                     "punto"=>"23" ,
                     "material"=> "sintetico" ,
                     "precio"=>  "2.8" ,
                     "stock_vendido"=> (3) ,
                     "total"=>  "8.4" 
                 )
        );

at the moment of showing this arrangement in an HTML table with the help of a foreach it generates the table but it shows me 3 rows. Here the detail is that I only have to show 2 rows, since a style is repeated, however I must show those two rows but when the style is the same I must also show the shoe point I buy. Something similar to this, I did it in excel the way the table should look like in html:

IMAGE LINK

where description is only the style, and if there is more than one point of a style as it is added in its respective cell point of the shoe.

I hope you can help me friends, I would appreciate it a lot of friends.

So far I show the information of that arrangement, but as I mention it shows me 3 rows.

echo '<table style="font-size:8px; padding:5px 10px;">

    <td style="border: 0.1px solid #666; background-color:white; font-size:8px; width:78.14px; text-align:justify">Descripción</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">22</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">22.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">23</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">23.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">24</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">24.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">25</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">25.5</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">26</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">26.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">27</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">27.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">28</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">28.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">29</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">29.5</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">30</td>
    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">30.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">31</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">31.5</td>
            <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">32</td>

            ';
        foreach ($array85 as $val){
                $name = $val["estilo"] . '-' . $val["material"] . '-' . $val["color"];
                $punto = $val["punto"];

                if ($punto == "22") {
                    $stock22 = $val["stock_vendido"];

                } else if ($punto == "22.5") {
                    $stock225 = $val["stock_vendido"];

                } else if ($punto == "23") {
                    $stock23 = $val["stock_vendido"];

                } else if ($punto == "23.5") {
                    $stock235 = $val["stock_vendido"];

                } else if ($punto == "24") {
                    $stock24 = $val["stock_vendido"];

                } else if ($punto == "24.5") {
                    $stock245 = $val["stock_vendido"];

                } else if ($punto == "25") {
                    $stock25 = $val["stock_vendido"];

                } else if ($punto == "25.5") {
                    $stock255 = $val["stock_vendido"];

                } else if ($punto == "26") {
                    $stock26 = $val["stock_vendido"];

                } else if ($punto == "26.5") {
                    $stock265 = $val["stock_vendido"];

                } else if ($punto == "27") {
                    $stock27 = $val["stock_vendido"];

                } else if ($punto == "27.5") {
                    $stock275 = $val["stock_vendido"];

                } else if ($punto == "28") {
                    $stock28 = $val["stock_vendido"];

                } else if ($punto == "28.5") {
                    $stock285 = $val["stock_vendido"];

                } else if ($punto == "29") {
                    $stock29 = $val["stock_vendido"];

                } else if ($punto == "29.5") {
                    $stock295 = $val["stock_vendido"];

                } else if ($punto == "30") {
                    $stock30 = $val["stock_vendido"];

                } else if ($punto == "30.5") {
                    $stock305 = $val["stock_vendido"];

                } else if ($punto == "31") {
                    $stock31 = $val["stock_vendido"];

                } else if ($punto == "31.5") {
                    $stock315 = $val["stock_vendido"];

                } else if ($punto == "32") {
                    $stock32 = $val["stock_vendido"];

                }
                echo '<tr>



                    <td style="border: 0.1px solid #666; background-color:white; font-size:8px; width:78.14px; text-align:justify">'.$name.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock22.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock225.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock23.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock235.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock24.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock245.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock25.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock255.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock26.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock265.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock27.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock275.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock28.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock285.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock29.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock295.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock30.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock305.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock31.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:34.14px; text-align:center">'.$stock315.'</td>
                    <td style="border: 0.1px solid #666; background-color:white; font-size:6px; width:30.14px; text-align:center">'.$stock32.'</td>



    </tr>
   ';
        }
        echo '</table>';

This is my attempt at solution but here I only count how many times the style is repeated, and I can not show the acquired units of each shoe size...

$datos = $array85;
        $array_tallajes = array();
        foreach ($datos as $item) {
            $value = $item["estilo"] . "-" . $item["material"] . "-" . $item["color"];
            $punto = $item["punto"];
            if (array_key_exists($value, $array_tallajes)) {
                if (array_key_exists($punto, $array_tallajes[$value])) {
                    $array_tallajes[$value][$punto] += 1;
                } else {
                    $array_tallajes[$value][$punto] = 1;
                }
            } else {
                $array_tallajes[$value] = [$punto => 1];
            }
        }
  • 写回答

1条回答 默认 最新

  • duankuang1046 2019-07-13 19:34
    关注

    Assuming data is already aggregated and can't be any repeated combinations of 'estilo' and 'punto', a simple reindex of your array will do:

    foreach($array85 as $el){
        $keys = ['stock_vendido', 'punto'];
        $size = array_filter($el, function($v, $k) use ($keys) { return in_array($k, $keys); }, ARRAY_FILTER_USE_BOTH);
    
       if (!isset($report[$el['estilo']])) {
          $shoe = array_filter($el, function($v, $k) use ($keys) { return !in_array($k, $keys); }, ARRAY_FILTER_USE_BOTH);
          unset($shoe['total']);
          $report[$el['estilo']] = $shoe;
          $report[$el['estilo']]['tallajes'] = [];
        } 
        $report[$el['estilo']]['tallajes'][$size['punto']] = $size['stock_vendido'];
    }
    

    Demo with HTML output and calculations.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错