【发布时间】:2018-03-31 23:37:53
【问题描述】:
我正在做一个项目,我需要访问一个 .dat 文件,其中包含我的 csv 格式数据,然后使用它为一个虚构的电子商务网站创建一个产品页面。我已经做到了,这样我就可以显示正确数量的图像/信息,但不能操作数组,以便我可以呈现它的特定部分。
我的 .dat 文件如下所示:
1001,Logitech G703,Wireless gaming mouse,$99.99,mouse.jpg
1002,Microsoft Keyboard,Bluetooth mechanical keyboard,$59.99,keyboard.jpg
1003,Bose Speaker,Teal wireless surround sound speaker,$159.99,speaker.jpg
1004,KickSTART,Grape flavored Mountain Dew KickSTART,$1.49,kickstart.jpg
1005,Google Pixel,Google's first real smartphone,$799.99,pixel.jpg
1006,Canon EOS REBEL,24.2 Megapixel,$849.00,canon.jpg
1007,Surface Pro 4,128GB 4GB RAM Intel Core i5=>$698.99,surface.jpg
1008,Luna,Siberian Husky Female,$999999.99,luna.jpg
1009,Loki,Siberian Husky Male,$999999.99,loki.jpg
1010,Coffee Mug,"This coffee is making me awesome!",$5.00,mug.jpg
其余部分如下所示:
<?php
$data = file('products.dat');
foreach ($data as $products){
$i++;
$dataExplode = explode(",", $products[$i]);
?>
<div class="product">
<image class="product_image" src="img/loki.jpg"> <?php print $products; ?>
<br>$20.99
<form method="post" action="viewcart.php?action=add&code=<?php echo
$product_array[$key]["code"]; ?>">
<div><input type="text" name="quantity" value="1" size="2" /><input
type="submit" value="Add to cart" class="btnAddAction" /></div>
</div>
<?php }; ?>
在我的 foreach 循环中对 $products 使用 print 时,它会按我想要的顺序显示产品信息,但我无法缩小范围并使用以逗号分隔的字符串。此外,我需要能够显示与每个产品相关联的图像,但也无法为此找到工作方法。
感谢您的帮助和建议!
【问题讨论】:
-
那1007行真的有
=>而不是价格前的逗号吗?这是怎么发生的? -
$product_array[$key]["code"]$product_array和$key定义在哪里?您是否尝试过使用str_getcsv()? -
$dataExplode = explode(",", $products);(没有 [$i] 那里),然后使用该数组:src="img/<?php echo $dataExplode[4]; ?>"> -
如果您执行
var_dump($dataExplode),您会看到在哪里可以找到哪些信息。 -
@Don'tPanic,我正在试验我的 csv 文件,看看是否能以某种方式将其转换为关联数组,但它并没有真正适合我。
标签: php csv multidimensional-array foreach