2015-11-10 93 views
0

我有一個main.txt文件,其中包含以下合併:PHP轉換文本文件陣列與另一個陣列

14573 
23903 
19800 
:包含以下

new featuredProduct('', '25844'), 
new featuredProduct('', '19800'), 
new featuredProduct('', '23869'), 
new featuredProduct('', '23903'), 
new featuredProduct('', '14573'), 
new featuredProduct('', '7949'), 
new featuredProduct('', '13815'), 
new featuredProduct('', '27042'), 
new featuredProduct('', '24383'), 

我也trim.txt文件

我試圖將trim轉換成與main相同的格式,將兩者合併爲一個數組,然後用array_unique過濾出重複項。

我已經試過:

$main = array_unique(file("main.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); 
$trim = array_unique(file("trim.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); 

//formats trim to the same as main 

foreach ($trim as $m) { 
    $m = "new featuredProduct('', ". "'". urlencode(trim($m)) ."')" . "," . "\n<br />"; 
    echo $m; 
} 

//merge into one array 
$t = (array) $m; 
$res = array_unique(array_merge($t, $main)); 

foreach ($res as $re) { 
echo $re . "<br>"; 
} 

我的結果:

我得到以下輸出:

new featuredProduct('', '25844'), 
new featuredProduct('', '23903'), 
new featuredProduct('', '19800'), 

new featuredProduct('', '25844'), 
new featuredProduct('', '19800'), 
new featuredProduct('', '23869'), 
new featuredProduct('', '23903'), 
new featuredProduct('', '14573'), 
new featuredProduct('', '7949'), 
new featuredProduct('', '13815'), 
new featuredProduct('', '27042'), 
new featuredProduct('', '24383'), 

因此,大家可以看到這兩個數組顯示,但他們沒有合併和顯示獨特的價值觀。

我認爲出現問題的是,只要我循環$ trim並分配給$ m,它就不再是一個數組了。我曾嘗試將$ m分配給數組$ t ..

$t = (array) $m; 

然後將$ t傳遞給array_merge函數,但這不起作用。

所以我的問題是如何使$ m數組工作,並可以傳遞給array_merge()因此允許我顯示合併數組中的唯一值?

乾杯

+0

爲什麼你需要在代碼周圍存儲代碼?從代碼中分離數據並存儲數字似乎更符合邏輯。然後,無論您需要什麼,都可以使用它們。 – jeroen

+0

從你的第一個'foreach'循環中取出'echo' –

+0

首先將$ m加到最後一個$ m,然後用split(「\ n」,$ m)將變量$ m與「\ n」 ;之後。它會返回一個數組。 –

回答

1

幾個問題,其中包括:不添加\n<br />$trim,使得它不同,不是唯一的。另外,$m只會是循環中的最後一個。

確保使用的&$m在循環改變實際數組:

$main = file("main.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
$trim = file("trim.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

foreach ($trim as &$m) { 
    $m = "new featuredProduct('', '" . urlencode(trim($m)) . "'),"; 
} 
$res = array_unique(array_merge($trim, $main)); 
+0

你是對的AbraCadaver。我的錯誤是額外的\ n
並試圖將$ m分配給另一個變量,而不是使用&$ m。感謝您的幫助。 – Hexana

1

新的項目只需追加到exisitng $main陣列,然後在其上調用array_unique

$main = array_unique(file("main.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); 
$trim = array_unique(file("trim.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); 

foreach ($trim as $m) { 
    $main[] = sprintf("new featuredProduct('', '%s'),", $m); 
} 
$res = array_unique($main); 

echo implode("<br>", $res);