我有这两个阵列。
一个是使用标准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
)
答案 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);