pastebin link:http://pastebin.com/4YCdbrsP
输入CSV格式,
number | itemid
1001, 121212
1001, 12991
1042, 99878
1042, 89776
1042, 87777
1045, 11010
1046, 22299
1049, 9875
预期产出
[1001 => {121212,12991}]
[1042 => {99878, 89776, 87777}]
[1045 => {11010}]
[1046 => {22299}]
[1049 => {9875}]
我正在尝试从包含上述内容的CSV文件中读取每一行(两列,每行包含“number”作为第一列,相关的“itemid”作为第二列。
如果下一行具有相同的“数字”,那么我希望将其对应的“itemid”推送到数组。如果下一行具有相同的“数字”,请重复此操作。
以下是我到目前为止的地方。
$row = 0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE && $row < 8) {
$sku = $data[0];
$upc = $data[1];
$skuUpcList = array($sku => array());
array_push($skuUpcList[$sku], $upc);
$row++;
while(($data = fgetcsv($handle, 1000, ",")) !== FALSE && $row < 8) {
if($data[0] == $sku) {
array_push($skuUpcList[$sku], $data[1]);
$row++;
} else {
$sku = $data[0];
$upc = $data[1];
$skuUpcList = array($sku => array());
array_push($skuUpcList[$sku], $data[1]);
$row++;
}
$skuUpcList = array_unique($skuUpcList);
var_dump($skuUpcList);
echo '<br>';
}
}
===输出上述脚本===
array(1) { [1001]=> array(2) { [0]=> string(6) "121212" [1]=> string(5) "12991" } }
array(1) { [1042]=> array(1) { [0]=> string(5) "99878" } }
array(1) { [1042]=> array(2) { [0]=> string(5) "99878" [1]=> string(5) "89776" } }
array(1) { [1042]=> array(3) { [0]=> string(5) "99878" [1]=> string(5) "89776" [2]=> string(5) "87777" } }
array(1) { [1045]=> array(1) { [0]=> string(5) "11010" } }
array(1) { [1046]=> array(1) { [0]=> string(5) "22299" } }
array(1) { [1049]=> array(1) { [0]=> string(4) "9875" } }
正如你所看到的,即使脚本运行正常,我也试图确保脚本只回显一次“数字”,但按照上面的输出,“数字”1042出现三次。
我试图将var_dump()语句移到第二个while循环之外但是,它似乎没有帮助。
任何有关此方面的帮助都会有所帮助。
pastebin link:http://pastebin.com/4YCdbrsP
答案 0 :(得分:3)
$skuUpcList = array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$skuUpcList[$data[0]] []= $data[1];
}
答案 1 :(得分:1)
这看起来效果很好:
<?php
$handle = fopen("xxx.csv", "r");
$row = 0;
$skuUpcList = array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE && $row < 8) {
$sku = $data[0];
$upc = $data[1];
if ( array_key_exists($sku, $skuUpcList) ) {
$skuUpcList[$sku][] = $upc;
} else {
$skuUpcList[$sku] = array($upc);
}
$row++;
}
print_r( $skuUpcList );