doujiu8479 2019-03-08 12:26
浏览 100

两个while循环到单个数组?

I'm trying to take parts number from two different tables and put them in the same array, then rearrange them.

Strangely it gives parts number twice, but when I run the same query in phpmyadmin it gives each part number once. I spend whole day but could not correct this.

//first query

$finalData = array(); $sql="SELECT
    jobc_parts_p.part_no,
    SUM(jobc_parts_p.issued_qty) AS sale_qty  FROM
    `jobc_parts_p`  WHERE DATE_FORMAT(jobc_parts_p.date_time,'%Y-%m-%d') BETWEEN '".$f."' AND '".$t."'

GROUP BY jobc_parts_p.part_no";


$result = $conn->query($sql);
while($row = $result->fetch_assoc()){   
 $finalData[$row['part_no']][] = $row;
}

//second query

  $sql2="SELECT
        jobc_consumble_p.part_no,
        SUM(jobc_consumble_p.issued_qty) AS csale_qty
    FROM
        `jobc_consumble_p`  
     WHERE DATE_FORMAT(jobc_consumble_p.date_time,'%Y-%m-%d') BETWEEN '".$f."' AND '".$t."'
    GROUP BY
    jobc_consumble_p.part_no";

$result = $conn->query($sql);
while($row = $result->fetch_assoc()){   
 $finalData[$row['part_no']][] = $row;
}       

/// rearanging data......

$rearrangedFinalData = array();
foreach($finalData AS $first) {
    foreach($first AS $data) {
        $temp = array();
        $temp['part_no'] = $data['part_no'];
        $temp['sale_qty'] = isset($data['sale_qty']) ? $data['sale_qty'] : $data['csale_qty'];
        $rearrangedFinalData[] = $temp;
    }
}

//output result

foreach($rearrangedFinalData AS $row) {
         $sr++;


            echo "<tr><td>$sr</td>
            <td colspan='2' >",$row["part_no"],"</td>                       
            <td align='center'>",$row["sale_qty"],"</td>
            </tr>";      
     }

RESULT

1    10R46    2
2    10R46    2
3    10R91    1
4    10R91    1
5    10M95    3
6    10M95    3

What i want:

1    10R46    2
2    10R91    1
3    10M95    3

First query print_r($finalData);

Array ( 
[10R46    ] => Array ( [0] => Array ( [part_no] => 
10R46     [sale_qty] => 1 ) )
[10R91    ] => Array ( [0] => Array ( [part_no] => 
10R91     [sale_qty] => 3 ) )) 
  • 写回答

3条回答 默认 最新

  • dounuo7954 2019-03-08 12:31
    关注

    Because, you are looping twice:

    Modify

    $rearrangedFinalData = array();
    foreach($finalData AS $first) {
        foreach($first AS $data) { // <-- Remove this extra loop.
            $temp = array();
            $temp['part_no'] = $data['part_no'];
            $temp['sale_qty'] = isset($data['sale_qty']) ? $data['sale_qty'] : $data['csale_qty'];
            $rearrangedFinalData[] = $temp;
        }
    }
    

    To:

    $rearrangedFinalData = array();
    foreach($finalData AS $first) {
            $temp = array();
            $temp['part_no'] = $first['part_no'];
            $temp['sale_qty'] = isset($first['sale_qty']) ? $first['sale_qty'] : $data['csale_qty'];
            $rearrangedFinalData[] = $temp;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度