2012-04-30 57 views
1

我有這兩個數組。不能array_unique合併的數組創建不同,並顯示不同

一個使用標準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

array_unique()工作在陣列的價值觀。在你的例子中沒有任何共同的價值,所以它不會刪除任何值。

是的空間使array_unique看到2個不同的值,因此basicalyl這兩個值是不一樣的:

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

和array_unique葉兩值

你必須預先中的按鍵之間的空間,因爲文件()保持\n\r。所以做一個:

file(,FILE_IGNORE_NEW_LINES); 
+0

第一個只是一個例子,兩個數組包含相同的值,讓我編輯的問題,以避免混淆,對此感到遺憾。 :) – magicianiam

+0

@magicianIam:是的,我得到了,所以我編輯,以添加空間信息 – dynamic

+0

我的意思是關於空間是在數組索引之間的那些,是甚至與array_unique有關?我一直在想,是什麼造成了這樣的空間。謝謝。 – magicianiam