【发布时间】:2016-11-22 00:36:59
【问题描述】:
因此,我不确定这是否是最佳方法,但我正在为客户端构建一个 Web 应用程序,该应用程序将从数据库中获取数据(股票名称、股票价格、用户购买的股票、购买日期)并显示股票价格 X 每个月购买的股票。我遇到的问题是 eaxh 股票有单独的条目。因此,例如,如果用户在 4 月和 5 月再次购买了 facebook 股票,则会创建两条记录。我希望能够通过将每个月的值合并到代表该股票的单行中,将数据合并到显示每只股票每月购买价格的表中的单行中。
我尝试了各种方法来处理数组,但找不到基于股票名称合并数组的方法。 php有办法做到这一点吗?
代码如下:
<?php
// TEMPLATE NAME: TEST REPORTS
get_header();
$get_contributions = 'y';
$get_withdrawls = 'y';
$run_report = 'y';
$i = 0;
global $wpdb;
// GET USER DATA
$get_user_data = "SELECT * FROM $wpdb->users";
$get_user_data_results = $wpdb->get_results($get_user_data);
?>
<table style="width: 98%; margin: 40px auto;"><tbody style="width:100%;">
<tr style="text-align:center;">
<td style="width: 7%;">Name</td><td style="width: 7%;">January</td><td
style="width: 7%;">February</td><td style="width: 7%;">March</td>
<td style="width: 7%;">April</td><td style="width: 7%;">May</td><td
style="width: 7%;">June</td><td style="width: 7%;">July</td><td
style="width: 7%;">August</td>
<td style="width: 7%;">September</td><td style="width:
7%;">October</td><td style="width: 7%;">November</td><td style="width:
7%;">December</td>
</tr>
<?php
// LOOP THROUGH USER DATA
foreach($get_user_data_results as $user_results):
$user_id = $user_results->ID;
$get_stock_data = "SELECT * FROM nli_user_stocks WHERE user_id
=".$user_id;
$get_stock_results = $wpdb->get_results($get_stock_data);
if($get_contributions == 'y'){
// SET VARIABLES FOR MONTHLY CONTRIBUTIONS
$company_stock_symbol = array();
foreach($get_stock_results as $stock_results):
$month = $stock_results->month;
$purchase_price = $stock_results->purchase_price;
$stock_symbol = $stock_results->stock_symbol;
$company_name = $stock_results->company_name;
$company_stock_symbol_size = count($company_stock_symbol);
$jan = '';
$feb = '';
$mar = '';
$apr = '';
$may = '';
$jun = '';
$jul = '';
$aug = '';
$sept = '';
$oct = '';
$nov = '';
$dec = '';
switch ($month) {
case 1:
$jan = $purchase_price;
break;
case 2:
$feb = $purchase_price;
break;
case 3:
$mar = $purchase_price;
break;
case 4:
$apr = $purchase_price;
break;
case 5:
$may = $purchase_price;
break;
case 6:
$jun = $purchase_price;
break;
case 7:
$jul = $purchase_price;
break;
case 8:
$aug = $purchase_price;
break;
case 9:
$sept = $purchase_price;
break;
case 10:
$oct = $purchase_price;
break;
case 11:
$nov = $purchase_price;
break;
case 12:
$dec = $purchase_price;
break;
default:
$jan = $purchase_price;
}
$add_array_values = array($stock_symbol, $month, $purchase_price, $jan,
$feb, $mar, $apr, $may, $jun, $jul, $aug, $sept, $oct, $nov, $dec,
$company_name);
array_push($company_stock_symbol, $add_array_values);
endforeach;
} // endif
foreach($company_stock_symbol as $stock_infoB):
if($i%2==true){
echo '<tr style="text-align:center;">';
}else{
echo '<tr style="text-align:center; background: #ded;">';
}
echo'
<td style="width: 16%; text-align: left; padding: 15px 0 15px 10px;
background: #444; color: #fff;">'.$stock_infoB[15].'</td><td
style="width: 7%;">'.$stock_infoB[3].'</td>
<td style="width: 7%;">'.$stock_infoB[4].'</td><td style="width:
7%;">'.$stock_infoB[5].'</td><td style="width:
7%;">'.$stock_infoB[6].'</td><td style="width:
7%;">'.$stock_infoB[7].'</td>
<td style="width: 7%;">'.$stock_infoB[8].'</td><td style="width:
7%;">'.$stock_infoB[9].'</td><td style="width:
7%;">'.$stock_infoB[10].'</td><td style="width:
7%;">'.$stock_infoB[11].'</td>
<td style="width: 7%;">'.$stock_infoB[12].'</td><td style="width:
7%;">'.$stock_infoB[13].'</td><td style="width:
7%;">'.$stock_infoB[14].'</td>
</tr>';
$i++;
endforeach;
endforeach;?>
</tbody></table>
<?php
get_footer();
?>
输出如下:
我需要 facebook 行是单行。
【问题讨论】:
-
向我们展示您的尝试,这样我们可以更好地解决您的问题。此外,社区很高兴看到您为得到答案而付出努力。
-
谢谢。我更新了我的帖子以添加代码和输出。
-
我建议查看array_merge 或 sql join 查询。
-
很遗憾无法回答。制作 2 张桌子,一张用于股票,您将在其中添加 facebook 并添加唯一约束。在其他购买。获取结果时使用 sql join