我有一个包含两列的csv文件 带有部件号的第一列和第二列是图像名称(每个产品的多个图像和基于部件号的图像名称)
我想每次检查每个零件编号和整个第二列图像名称,因为这没有正确排序,并将该相关零件编号的图像名称与该零件编号一起存储在另一个csv中。
当前CSV
PartNumber Image Name
WP35001153 35001153R.jpg
WPW10135901 35001153R_Back.jpg
WPW10184873 W10135901R.jpg
WPW10200900 W10135901R_BACK.jpg
WPW10215493 W10137702R.jpg
WPW10249237 W10137702R_Back.jpg
WPW10258402 W10141364R.jpg
WPW10477076 W10477076R.jpg
WP8194064 W10477076R_Back.jpg
W10479760R.jpg
如上所述csv第一部分WP35001153
右侧有两个图片35001153R.jpg
和35001153R_Back.jpg
此外,部件号列和图像列不是特定的或正确分配的。
所以我想搜索带有图像名称entrie列的零件编号,如果匹配则存储在Image1
列中,并且应该存储在下一列Image2
中,如下所示。
PartNumber Image1 Image2
WP35001153 35001153R.jpg 35001153R_Back.jpg
WPW10135901 W10135901R.jpg W10135901R_BACK.jpg
WPW10200900 W10200900.jpg
请帮助解决问题
谢谢
答案 0 :(得分:0)
似乎你需要使用你的第一列(csv)构建一个新数组,将其作为一个键进行清理,然后添加所有相关内容。
例子(不是确切的代码)
$mynewarray = [];
foreach ($mycsv as $line) {
$id = $line['PartNumber'];
if ($id[2] == 'W') {
it's a key, clean to obtain : 35001153
mynewarray[$id] = ['pics'=>[ ... ]];
} else {
it's a pic, add the image name
clean the id image name to obtain the key 35001153
mynewarray[$id]['pics'][] = the pics;
}
}
如果我理解你的需要,这个想法可以在一个循环中解决你的问题,几乎没有id分析。
:)享受