2014-01-11 50 views
0

我有一個以這種方式構建的csv文件。它給我pagesviews數量按小時在重複數組鍵/值中插入默認值

"00","ARTICLE 1",100 
"00","ARTICLE 2",50 
"00","ARTICLE 3",30 
"01","ARTICLE 1",40 
"01","ARTICLE 2",100 
"01","ARTICLE 4",200 
"02","ARTICLE 1",30 
"02","ARTICLE 2",40 
"02","ARTICLE 3",30 
"03","ARTICLE 5",30 

我導入CSV在我的PHP代碼,我在mutidimensional陣列插入內容。當我的var_dump我的陣列,這是我所得到的

Array 
(
[00] => Array 
    (
     [ARTICLE 1] => 100 
     [ARTICLE 2] => 50 
     [ARTICLE 3] => 30 
    ) 

[01] => Array 
    (
     [ARTICLE 1] => 40 
     [ARTICLE 2] => 100 
     [ARTICLE 4] => 200 
    ) 

[02] => Array 
    (
     [ARTICLE 1] => 30 
     [ARTICLE 2] => 40 
     [ARTICLE 3] => 30 
    ) 

[03] => Array 
    (
     [ARTICLE 5] => 30 
    ) 

) 

所以我的問題是「第4條」只在「01」看,但我想它出現在鍵「00」,「02」, 「03」的默認值爲0.對於僅出現在「03」鍵的「第5條」也是如此。我想它出現在鍵「00」,「01」,「02」,「03」,「04」

末,我想我的數組appeear這樣

Array 
(
[00] => Array 
    (
     [ARTICLE 1] => 100 
     [ARTICLE 2] => 50 
     [ARTICLE 3] => 30 
     [ARTICLE 4] => 0 
     [ARTICLE 5] => 0 
    ) 

[01] => Array 
    (
     [ARTICLE 1] => 40 
     [ARTICLE 2] => 100 
     [ARTICLE 3] => 0 
     [ARTICLE 4] => 200 
     [ARTICLE 5] => 0 
    ) 

[02] => Array 
    (
     [ARTICLE 1] => 30 
     [ARTICLE 2] => 40 
     [ARTICLE 3] => 30 
     [ARTICLE 4] => 0 
     [ARTICLE 5] => 0 
    ) 

[03] => Array 
    (
     [ARTICLE 1] => 0 
     [ARTICLE 2] => 0 
     [ARTICLE 3] => 0 
     [ARTICLE 4] => 0 
     [ARTICLE 5] => 30 
    ) 

) 

我試圖做這樣的事情,但它不工作

foreach ($orig as $item) { 
$new[] = $item; 
$new[] = $item; 

} 

可有一個人請幫助?

UPDATE

我想是這樣的

foreach ($articles as $article) 
{ 
$pageviews2[$article] = $pageviews; 
} 

其中$ pageviews2包含我的CSV文件的內容和數組文章這樣

$articles = Array("00", "01", "02", "03","04","05"); 

及以下的結構當我var_dump $ pageviews2數組時獲得結果

Array 
(
[00] => Array 
    (
     [00] => Array 
      (
       [ARTICLE 1] => 100 
       [ARTICLE 2] => 50 
       [ARTICLE 3] => 30 
      ) 

     [01] => Array 
      (
       [ARTICLE 1] => 40 
       [ARTICLE 2] => 100 
       [ARTICLE 4] => 200 
      ) 

     [02] => Array 
      (
       [ARTICLE 1] => 30 
       [ARTICLE 2] => 40 
       [ARTICLE 3] => 30 
      ) 

     [03] => Array 
      (
       [ARTICLE 5] => 30 
      ) 

    ) 

[01] => Array 
    (
     [00] => Array 
      (
       [ARTICLE 1] => 100 
       [ARTICLE 2] => 50 
       [ARTICLE 3] => 30 
      ) 

     [01] => Array 
      (
       [ARTICLE 1] => 40 
       [ARTICLE 2] => 100 
       [ARTICLE 4] => 200 
      ) 

     [02] => Array 
      (
       [ARTICLE 1] => 30 
       [ARTICLE 2] => 40 
       [ARTICLE 3] => 30 
      ) 

     [03] => Array 
      (
       [ARTICLE 5] => 30 
      ) 

    ) 
+0

這將是一個更好的問題,如果你提供一些代碼,我們實際上可以複製/粘貼嘗試(像一個真正的數組,而不是後續代碼var_dump輸出) 。並解釋你到目前爲止所做的嘗試,什麼都不起作用;你當前的代碼沒有太多的作用...... – elclanrs

回答

1

我已經處理過這種情況的方式正如你所提到的那樣,用一組已知值預填充每個「外部」元素。這是基於這樣一種假設,即您確切知道在數組的第二維中需要多少個元素,並且事先知道第一個元素中將包含多少個元素。下面是一些代碼來演示:

$pageviews = array(); 
$articles = Array("00", "01", "02", "03"); 

$prepopulated = Array (
    "Article 1" => 0, 
    "Article 2" => 0, 
    "Article 3" => 0, 
    "Article 4" => 0, 
    "Article 5" => 0 
); 

然後,您可以導入CSV之前創建一個骨架陣列:

foreach ($articles as $article) { 
    $pageviews[$article] = $prepopulated; 
} 

然後,當你從CSV,所有導入的數據,你正在做的您剛纔創建的骨架陣列中,在覆蓋默認值:

if (($handle = fopen("pageviews.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $pageviews[$data[0]][$data[1]] = $data[2]; 
    } 
    fclose($handle); 
} 
+0

問題是我不能預先知道在數組的第二維中顯示的次數,我不知道第一個元素中有多少元素。 } – user3172841

+0

啊。我會更新答案,以包含更通用的方法,以確定元素的範圍。 – illusivefingers