2015-11-10 64 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);