我是PHP新手,遇到了一些问题。
我有这样的多维数组显示。
array (size=4)
'debt Reduction' =>
array (size=2)
'credit card ' => string '495.00' (length=6)
'Student Loan' => string '40.00' (length=5)
'gifts' =>
array (size=2)
'Birthday' => string '23.00' (length=5)
'Christmas' => string '49.00' (length=5)
'personal' =>
array (size=2)
'Gym Memberships' => string '138.00' (length=6)
'Hair Cuts' => string '40.00' (length=5)
'saving' =>
array (size=2)
'Emergency Fund' => string '80.00' (length=5)
'wedding' => string '60.00' (length=5)
使用此产品制成
$sortedArray = array();
foreach ($SQLresults as $row)
{
$sortedArray[$row['catagoryName']][$row['Subcatagory_name']] = $row['expenseAmount'];
}
此数组随后进入函数以产生一系列HTML结果
我还有另一个数组,显示每个部分的总量,输出为
array (size=4)
0 =>
array (size=1)
'expenseAmount' => string '535.00' (length=6)
1 =>
array (size=1)
'expenseAmount' => string '72.00' (length=5)
2 =>
array (size=1)
'expenseAmount' => string '178.00' (length=6)
3 =>
array (size=1)
'expenseAmount' => string '140.00' (length=6)
我以为我可以取出expenseAmount
文本并将其输入到我创建的函数中
foreach ($expenseAmount as $rowe => $new)
{
$type[] = $new['expenseAmount'];
}
这会删除消耗金额文本
下面是我用来输出html的函数($array
代表新数组)
public function dropdownTally($groupedCatagories, $number_of_rows, $array)
{
$output = '';
if($number_of_rows > 0)
{
foreach ($groupedCatagories as $category => $subCategories)
{
$output .= '<input type="button"id="showdiv"class="btn btn-link dropdownCats"value="'.$category.''.$array.'">';
$output .= '<div id="div" class ="newClassTest" style="display:none">';
$output .= '<table class="dynamicExpenseTable">';
$output .= '<tr class="tableRows">';
foreach ($subCategories as $title => $amount)
{
$output .='<td class="dataExpense">'.$title.'</td>';
$output .='<td class="dataExpense">'. $amount.'</td>';
$output .='</tr>';
}
$output .='</table> ';
$output .='</div>';
}
}
else
{
$output .= '<p>No data found</p>';
}
return $output;
}
如您所见,我正在尝试将每个类别的总和添加到名称旁边。
输出是两件事之一:
-“从数组到字符串的转换”。
经过一番游戏后,我想将其包装在另一个foreach
语句中,然后重复该按钮并一遍又一遍地输出。
所以我的问题是,我是否应该尝试将第二个数组推入第一个数组,这将如何执行以输出类似的内容?
array (size=4)
'debt Reduction' =>
'535.00'
array (size=2)
'credit card ' => string '495.00' (length=6)
'Student Loan' => string '40.00' (length=5)
'gifts' =>
'72.00'
array (size=2)
'Birthday' => string '23.00' (length=5)
'Christmas' => string '49.00' (length=5)
还是有一种更简单的方法来实现我的意思?对不起,我只是想尝试解决我的问题而发表的冗长帖子。
再次感谢 杰克
答案 0 :(得分:0)
生成$output
变量时有很多小错误。
在属性值和下一个属性名称之间添加一些空格。您编写了type="button"id="showdiv"class="btn btn-link dropdownCats"value="..."
,这可能会导致有关读取代码的错误。
$output .= '<input type="button" id="showdiv" class="btn btn-link dropdownCats" value="'.$category.''.$array.'">';
然后,id="showdiv"
在循环中是错误的。 ID必须是唯一的。您可能要使用类或为该div指定一个值。
$i = 0;
foreach ($groupedCatagories as $category => $subCategories)
{
$i++;
$output .= '<input type="button" id="showdiv_' . $i . '" ...>';
//left of code
}
接下来,正如您在评论中所述,按钮的值应为"debt Reduction : 535.00"
,并且您写了value="' . $category . $array. '"
我想这些值来自您显示的第一个数组
'debt Reduction' =>
array (size=2)
'credit card ' => string '495.00' (length=6)
'Student Loan' => string '40.00' (length=5)
535是'credit card '
和Student Loan
的加法。
在尝试显示该值之前,可能需要计算该值。
$i = 0;
foreach ($groupedCatagories as $category => $subCategories)
{
$i++;
$buttonValue = 0;
foreach ($subCategories as $value)
$buttonValue += floatval($value);
$buttonValue = $category . ' : ' . $buttonValue;
$output .= '<input type="button" id="showdiv_' . $i . '" class="btn btn-link dropdownCats" value="' . $buttonValue . '">';
//...
}
与之前一样,您在循环$output .= '<div id="div_' . $i . '" class ="newClassTest" style="display:none">';
中定义了一个硬编码ID。
最后,生成的HTML无效。您可以在循环外部打开<tr>
标签,然后在该循环内部将其关闭。这将产生这种HTML:
<table>
<tr>
<td>
</td>
<td>
</td>
</tr> <!-- notice the closed <tr> not being re-opened -->
<td>
</td>
<td>
</td>
</tr>
<td>
</td>
<td>
</td>
</tr>
</table>
您可能想在循环中打开和关闭它。
foreach ($subCategories as $title => $amount)
{
$output .= '<tr class="tableRows">';
$output .= '<td class="dataExpense">' . $title . '</td>';
$output .= '<td class="dataExpense">' . $amount . '</td>';
$output .= '</tr>';
}
最终代码可能是这样的:
$i = 0;
foreach ($groupedCatagories as $category => $subCategories)
{
$i++;
$buttonValue = 0;
foreach ($subCategories as $value)
$buttonValue += floatval($value);
$buttonValue = $category . ' : ' . $buttonValue;
$output .= '<input type="button" id="showdiv_' . $i . '" class="btn btn-link dropdownCats" value="' . $buttonValue . '">';
$output .= '<div id="div_' . $i . '" class ="newClassTest" style="display:none">';
$output .= '<table class="dynamicExpenseTable">';
foreach ($subCategories as $title => $amount)
{
$output .= '<tr class="tableRows">';
$output .= '<td class="dataExpense">' . $title . '</td>';
$output .= '<td class="dataExpense">' . $amount . '</td>';
$output .= '</tr>';
}
$output .= '</table> ';
$output .= '</div>';
}