微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结合双 foreach 循环

如何解决结合双 foreach 循环

我有一张产品表和一张订单表,我想结合这些数据来绘制条形图。如果我运行订单 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 *,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']."},";

}

解决方法

也许是这样的 - 使用关联数组来存储您的数据,因为您按月/年对其进行分组

public class ApplicationLookupProtectorKeyRing : ILookupProtectorKeyRing
{
    public IDictionary<string,IKey> Keys { get; set; }

    private readonly IKeyManager _keyManager;
    private readonly object _keyDictionaryLock;

    public ApplicationLookupProtectorKeyRing(IKeyManager keyManager)
    {
        Keys = new Dictionary<string,IKey>();
        _keyManager = keyManager;
        _keyDictionaryLock = new object();
    }

    public string this[string keyId]
    {
        get
        {
            ReloadKeys();
            lock (_keyDictionaryLock)
            {
                return Keys[keyId].KeyId.ToString();
            }
        }
    }

    public string CurrentKeyId
    {
        get
        {
            ReloadKeys();
            lock (_keyDictionaryLock)
            {
                return GetAllKeyIds()
                    .Where(w => Keys[w].ActivationDate <= DateTimeOffset.UtcNow)
                    .OrderByDescending(o => Keys[o].ActivationDate)
                    .FirstOrDefault();
            }
        }
    }

    public IEnumerable<string> GetAllKeyIds()
    {
        ReloadKeys();
        lock (_keyDictionaryLock)
        {
            return Keys.Keys;
        }
    }

    private void ReloadKeys()
    {
        lock (_keyDictionaryLock)
        {
            if (!_keyManager.GetCacheExpirationToken().IsCancellationRequested && Keys.Count != 0) { return; }

            var keys = _keyManager.GetAllKeys()
                .Where(w => !w.IsRevoked)
                .ToList();

            if (!keys.Any())
            {
                keys.Add(_keyManager.CreateNewKey(DateTimeOffset.UtcNow,DateTimeOffset.UtcNow.AddDays(7)));
            }

            Keys.Clear();
            keys.ForEach(key => Keys.Add(key.KeyId.ToString(),key));
        }
    }
}

现在您可以引用数组:

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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。