我有两个数组。
一个是使用标准 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);