无法以不同方式创建的array_unique合并数组并以不同方式显示

时间:2012-04-30 17:09:07

标签: php arrays

我有这两个阵列。

一个是使用标准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 个答案:

答案 0 :(得分:1)

array_unique()适用于数组的值。在您的示例中,没有任何共同的值,因此它不会删除任何值。

是的空格使得array_unique看到2个不同的值,所以basicalyl这两个值是不一样的:

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

和array_unique都留下了两个值

pre之前的密钥之间有空格,因为file()保留\n\r。所以做一个:

file(,FILE_IGNORE_NEW_LINES);