我试图创建一个允许我的脚本:
通过使用以下格式保存db_products.php文件中的所有数组来创建产品数据库:
$products[] = "Bread|2.0|0.50"; $products[] = "Milk|3.0|0.70"; ...
哪里"面包"是项目名称," 2.0"是他的价格和" 0.5"是生产成本;
,我想在纯html表中提取并插入所有数据,如下所示:
| BREAD | MILK | ... | price | 2.00$ | 3.00$ | ... | costs | 0.50$ | 0.70$ | ... | gain | 1.50$ | 2.30$ | ... |
我尝试做什么
$handle = "db_products.php";
fopen($handle, "r"); // or also file_get_contents
$count = count($products);
for($i=0; $i < $count; $i++){
list($product, $price, $cost) = explode("|", $products[$i]);
$product_array = implode(", ", $product);
$price_array = implode(", ", $price);
$cost_array = implode(",", $cost);
}
<html code...>
<table>
<tr>
<th></th>
<? foreach($product_array as $id => $prod): ?>
<td><? echo $prod; ?></td>
<? endforeach; ?>
</tr>
<tr>
<th>price</th>
<? foreach($product_array as $how => $much): ?>
<td><? echo $much; ?></td>
<? endforeach; ?>
...
当然,这段代码不起作用。 我知道存在概念错误,我应该做出更好的语法选择,但我认为距离解决方案只有一步之遥,但我无法看到它。
我忘记了什么? 任何建议都将受到高度赞赏。 提前谢谢。
答案 0 :(得分:0)
请找到下面的代码,看看这是否是您期望的结果,在您的原始代码中,您可能不需要fopen,只需简单地包含php文件(它只是回显sctript),如果它&# 39;就像你描述db_products.php
只有产品数组一样。其次,您可以使用html标记加入字符串,而不是使用多个for循环。以下是我的第一次尝试,请检查它是否符合您的预期。一旦我有更多时间,我会做一些修改。感谢
<html>
<body>
<?php
include('file.php'); #simply include the product array
$count = count($products);
$header = '<td></td><td>'; #Product headers first column is empty
$priceRow = '<td>price</td><td>'; #Price row, first column to store row name
$costRow = '<td>cost</td><td>'; #cost
$gainRow = '<td>gain</td><td>'; #gain
echo '<table>';
for($i=0; $i < $count; $i++){
list($product, $price, $cost) = explode("|", $products[$i]);
$header .= $product . '</td><td>';
$priceRow .= $price . '</td><td>';
$costRow .= $cost . '</td><td>';
$gainRow .= $price-$cost . '</td><td>';
}
#print header
echo '<tr>';
echo $header;
echo '</tr>';
#print price
echo '<tr>';
echo $priceRow;
echo '</tr>';
#print cost
echo '<tr>';
echo $costRow;
echo '</tr>';
#print gain
echo '<tr>';
echo $gainRow;
echo '</tr>';
echo '</table>';
?>
</body>
</html>
答案 1 :(得分:0)
感谢您的贡献,Ryo。 在我的脚本中修复错误很有帮助(include - fopen)。 实际上db_product.php它不是一个文本文件,那么使用&#34; fopen&#34;是多余的。打开一个php文件。 无论如何,我的目的是将PHP代码与HTML代码分开。这就是为什么我谈到&#34;一个纯HTML表&#34;。 数据必须在其引用数组中保持干净,而不在字符串中附加HTML代码。
今天处理我的代码,我发现了一个潜在的解决方案。
include("file.php");
$count = count($products);
$product_array = array(); // initialize product_array
$price_array = array(); // initialize price_array
$cost_array = array(); // initialize cost_array
$gain_array = array(); // initialize gain_array
for($i=0; $i < $count; $i++):
list($product, $price, $cost) = explode("|", $products[$i]);
$product_array[$i] = $product; // fill product_array
$price_array[$i] = $price; // fill price_array
$cost_array[$i] = $cost; // fill cost_array
$gain_array[$i] = $price - $cost; // calculate difference and create gain_array
endfor;
?>
<html code...>
<table>
<thead>
<tr>
<th></th>
<? foreach($product_array as $product_unit): ?>
<th><? echo $product_unit; ?></th>
<? endforeach; ?>
</tr>
</thead>
<tfoot>
<tr>
<th>gain</th>
<? foreach($gain_array as $gain_unit): ?>
<td><? echo $gain_unit; ?></td>
<? endforeach; ?>
</tr>
</tfoot>
<tbody>
<tr>
<th>price</th>
<? foreach($price_array as $price_unit): ?>
<td><? echo $price_unit; ?></td>
<? endforeach; ?>
</tr>
<tr>
<th>costs</th>
<? foreach($cost_array as $cost_unit): ?>
<td><? echo $cost_unit; ?></td>
<? endforeach; ?>
</tr>
</table>
这段代码完美无缺,但并不像我想的那样干净利落。 有没有更好的方法来做到这一点,考虑到我想保留单独的PHP代码和HTML代码?
提前致谢:)