1

我有这两个数组。

一个是使用标准 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
)
4

1 回答 1

1

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

是的,空格使 array_unique 看到 2 个不同的值,所以这 2 个值基本上是不一样的:

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

和 array_unique 保留两个值

您在 pre 中的键之间有那个空间,因为 file() 保持\n\r. 所以做一个:

file(,FILE_IGNORE_NEW_LINES);
于 2012-04-30T17:10:48.867 回答