簡體   English   中英

從CSV讀取並將行中的內容合並到數組中

[英]Reading from CSV and merging content in rows into an array

pastebin鏈接: 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文件中讀取每一行(兩列,每一行的第一列包含“數字”,第二列包含關聯的“ 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出現了3次。

我試圖將var_dump()語句移出第二個while循環,但是似乎沒有幫助。

關於此的任何幫助將是有幫助的。

pastebin鏈接: http//pastebin.com/4YCdbrsP

$skuUpcList = array();

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $skuUpcList[$data[0]] []= $data[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 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM