2012-04-30 28 views
1

我有这两个数组。不能array_unique合并的数组创建不同,并显示不同

一个使用标准SELECT查询生成,使用该语句产生的另一个:

$file = file(DOC_ROOT."robots.txt"); 
foreach($file as $text) { 
$test[] = $text; 
} 

第一阵列输出这样的:

Array 
(
    [0] => Disallow: /admin/ 
    [1] => Disallow: /m/ 
    [2] => Disallow: /private/ 
) 

其他这样的:

Array 
(
[4] => Disallow: /admin/ 

[5] => Disallow: /m/ 

[6] => Disallow: /private/ 

[7] => Disallow: /success.php 
) 

现在的问题是,在合并两个数组后,array_unique不起作用,即时猜测它可能是由第二个数组产生的空间造成的,我尝试删除它们但没有运气。现在我的问题是,这真的是导致这个问题的空间还是我的流程有问题?为了您的方便,这里使用的是数组代码,并不是那么重要。我将如何解决这个问题?谢谢。

$result = array_merge($lines,$test); 
    $result = array_unique($result); 
    echo '<pre>'; 
    echo print_r($result); 
    echo '</pre>'; 

结果:

Array 
(
[0] => Disallow: /admin/ 
[1] => Disallow: /m/ 
[2] => Disallow: /private/ 

[32] => 

[33] => Disallow: /admin/ 

[34] => Disallow: /m/ 

[35] => Disallow: /private/ 

[36] => Disallow: /success.php 
) 

回答

1

array_unique()工作在阵列的价值观。在你的例子中没有任何共同的价值,所以它不会删除任何值。

是的空间使array_unique看到2个不同的值,因此basicalyl这两个值是不一样的:

[0] => 'hello1 hello2' 
[1] => 'hello1 hello2' 

和array_unique叶两值

你必须预先中的按键之间的空间,因为文件()保持\n\r。所以做一个:

file(,FILE_IGNORE_NEW_LINES); 
+0

第一个只是一个例子,两个数组包含相同的值,让我编辑的问题,以避免混淆,对此感到遗憾。 :) – magicianiam

+0

@magicianIam:是的,我得到了,所以我编辑,以添加空间信息 – dynamic

+0

我的意思是关于空间是在数组索引之间的那些,是甚至与array_unique有关?我一直在想,是什么造成了这样的空间。谢谢。 – magicianiam