【问题标题】:update multidimensional indexed array in php在php中更新多维索引数组
【发布时间】: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();
?>

输出如下:

Stock Reports Page

我需要 facebook 行是单行。

【问题讨论】:

  • 向我们展示您的尝试,这样我们可以更好地解决您的问题。此外,社区很高兴看到您为得到答案而付出努力。
  • 谢谢。我更新了我的帖子以添加代码和输出。
  • 我建议查看array_merge sql join 查询。
  • 很遗憾无法回答。制作 2 张桌子,一张用于股票,您将在其中添加 facebook 并添加唯一约束。在其他购买。获取结果时使用 sql join

标签: php arrays merge


【解决方案1】:

感谢所有帮助。我最终在一个新创建的表上使用了 JOIN,经过一整天没有进展,感谢这个社区的帮助,今天取得了很大成就。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-26
    • 2021-02-05
    • 1970-01-01
    • 2016-08-31
    • 2012-09-07
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多