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


Cannot array_unique merged arrays created differently and displays differently

我有两个数组。

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

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

是的,空格使array_unique看到 2 个不同的值,因此碱性丙基这 2 个值并不相同:

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

和 array_unique 保留两个值

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

file(,FILE_IGNORE_NEW_LINES);