Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 联合双foreach循环_Php_Mysql_Foreach - Fatal编程技术网

Php 联合双foreach循环

Php 联合双foreach循环,php,mysql,foreach,Php,Mysql,Foreach,我有一个产品表和一个订单表,我想结合这些数据来绘制条形图。如果我运行每个循环的订单,产品将不显示,如果我运行产品,则订单将不显示。如何结合这些 $query_product = "SELECT *,count(products.id) as no_products FROM products group by MONTH(products.added_on) , YEAR(products.added_on)"; $query_order = "SELECT *,

我有一个产品表和一个订单表,我想结合这些数据来绘制条形图。如果我运行每个循环的订单,产品将不显示,如果我运行产品,则订单将不显示。如何结合这些

$query_product = "SELECT *,count(products.id) as no_products FROM products group by MONTH(products.added_on) , YEAR(products.added_on)";

$query_order = "SELECT *,count(orders.id) as no_orders FROM orders group by MONTH(orders.added_on) , YEAR(orders.added_on)  order by YEAR(orders.added_on) asc, MONTH(orders.added_on) asc";

$result_order = mysqli_query($con, $query_order);
$result_product = mysqli_query($con, $query_product);
$chart_data = '';

$product_data = array();

while ($row = mysqli_fetch_assoc($result_product)) {
    $product_data[] = $row;
}

$order_data = array();

while ($row = mysqli_fetch_assoc($result_order)) {
    $order_data[] = $row;
}

foreach ($order_data as $key => $val) {
    $date = $val['added_on'];

    $month_year = date('F, Y', strtotime($date));

    $chart_data .= "{ year:'" . $month_year . "', income:" . '5' . ", products:" . '' . ", orders:" . $val['no_orders'] . "}, ";
}

//I want to gain my data like this below string.

 //$chart_data .= "{ year:'".$month_year."', income:".'5'.", products:".$val['no_products'].", orders:".$val['no_orders']."}, ";

}

可能是这样的—使用关联数组来存储数据,因为您是按月/年对数据进行分组的

while ($row = mysqli_fetch_assoc($result_product)) {
    $product_data[date("m-Y", strtotime($row['added_on']))] = $row;
}


while ($row = mysqli_fetch_assoc($result_order)) {
    $order_data[date("m-Y", strtotime($row['added_on']))] = $row;
}
现在,您可以引用阵列:

foreach ($order_data as $key => $val) {
    $date = $val['added_on'];

    $month_year = date('F, Y', strtotime($date));
    $keyFind = date("m-Y", strtotime($date));

    $chart_data[]= array(
        "year" => $month_year, 
        "income" => '5', 
        "products" => $product_data[$keyFind]['no_products'],
        "orders" => $val['no_orders']
     );
   }

   // NOW make it json
   $chart_data = json_encode($chart_dta);

请分享更多细节。你所说的“如何组合这些”是什么意思?结果应该是怎样的?你还试图解决什么问题?为什么你要自己构建json字符串,而不是使用数组和
json_encode
?嗨,我想显示我的数据,比如$chart_data.=“{year:”“$month_year.”,收入:“.5.”,产品:“.val['no_products']”,订单:“.val['no_orders']”,”;如果我使用double foreach循环,那么我将无法得到我需要的结果,我希望如果我添加产品,那么数据将仅显示产品,如果我下订单,那么数据将显示我每个月的订单和产品,我希望您理解。请通过编辑对您的问题进行所有澄清。再说一次:为什么不使用
json\u encode
?我是初学者,我不知道json\u encode,我正在努力学习,这就是为什么我使用数组和循环