PHP - 在循环中操作csv中的数据
问题描述:
我正在开发一个项目,我需要访问包含csv格式数据的.dat文件,然后使用该文件为虚构的电子商务网站创建产品页面。我已经做到了,让我有正确数量的图像/信息显示出来,但不能操纵数组,以便我可以呈现它的特定部分。PHP - 在循环中操作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循环内的产品,将显示产品信息按顺序排列,就像我想要的,但我无法缩小它的范围,并使用以逗号分隔的字符串。此外,我需要能够显示与每个产品相关的图像,但无法找到适用于此的工作方法。
我很感谢帮助和建议!
答
您不需要在产品数组中指定$ i,即指向每列而不考虑行。
您需要按行\n
爆炸,然后用逗号分隔每行(产品)。
当你拿一行产品并将其爆炸时,它就成为一个数组。
$data= file('products.dat');
foreach ($data as $line){
$product = explode(",",$line);
$id = $product[0];
$title = $product[1];
$price = $product[2];
$description = $product[3];
$image = $product[4];
}
希望这会有所帮助。
这个1007行在价格之前真的有'=>'而不是逗号吗?那是怎么发生的? –
'$ product_array [$ key] [“code”]'$ product_array'和'$ key'定义在哪里?你尝试过使用['str_getcsv()'](http://php.net/manual/en/function.str-getcsv.php)吗? –
'$ dataExplode = explode(“,”,$ products);'(no [$ i] there),then use the array:'src =“img/”> ' – Jeff