2013-09-24 70 views
0

我有一個小的php腳本,需要產品xml值並將它們寫入csv文件,但我遇到了產品選項的問題。 我已經從xml中提取了每個產品的選項,並將值添加到像這樣的數組中。如何循環訪問數組並在PHP中將它們連接在一起?

顏色[1]顏色[2]色彩[3]

尺寸[1]尺寸[2]大小[3]

現在我需要使CSV這將看起來像這樣;

顏色[1],尺寸[1]

顏色[1],尺寸[2]

顏色[1],大小[3]

顏色[2],大小[ 1]

顏色[2],大小[2]

等等......

下面是我用來獲取信息的代碼。進入陣列,我甚至不確定這是做到這一點的最佳方式,但它似乎確實工作。

 $i=0; 
foreach($_item->options->Color as $_color){ 
     $color[$i] = $_color; 
     $i++; 
     } 
     print $sku; 
    foreach($color as $i=>$value){ 
     print ' - $color[' . $i . '] holds ' . $value; 
     } 
echo '<br>'; 

     $i=0; 
foreach($_item->options->Size as $_size){ 
     $size[$i] = $_size; 
     $i++; 
     } 
     print $sku; 
    foreach($size as $i=>$value){ 
     print ' - $size[' . $i . '] holds ' . $value; 
     } 
echo '<br>'; 

此刻我只是打印出產品$ sku和選項的值。 我喜歡一些關於如何獲取$ color []和$ size []的指針以獲取所有可能的組合並將它們寫入csv。 感謝

+0

你嵌套循環後?遍歷顏色;對於每種顏色,重複大小。你會發現'fputcsv()'對創建CSV本身很有用。 –

+0

@ George-Brighton感謝您的幫助,我實際上使用fwrite()來製作csv,所以我一定會看看fputcsv() – Go2Pub

回答

0
$colors = array("color1", "color2", "color3"); 

$sizes = array("size1", "size2", "size3"); 

$result = array(); 
foreach($colors as $cKey => $c) { 
    foreach($sizes as $s) { 
     $result[][$c] = $s; 
    } 
} 

var_dump($result); 

輸出

array (size=9) 
    0 => 
    array (size=1) 
     'color1' => string 'size1' (length=5) 
    1 => 
    array (size=1) 
     'color1' => string 'size2' (length=5) 
    2 => 
    array (size=1) 
     'color1' => string 'size3' (length=5) 
    3 => 
    array (size=1) 
     'color2' => string 'size1' (length=5) 
    4 => 
    array (size=1) 
     'color2' => string 'size2' (length=5) 
    5 => 
    array (size=1) 
     'color2' => string 'size3' (length=5) 
    6 => 
    array (size=1) 
     'color3' => string 'size1' (length=5) 
    7 => 
    array (size=1) 
     'color3' => string 'size2' (length=5) 
    8 => 
    array (size=1) 
     'color3' => string 'size3' (length=5) 
+0

非常感謝,工作正常。我真的搞笑了一點,而不是將結果存儲在一個數組中,我只是圍繞顏色和大小,並直接寫入文件。可能不是最漂亮的解決方案,但它似乎很好。 – Go2Pub

相關問題