2010-11-22 71 views
4

有人可以告訴我爲什麼這不能按預期工作?爲什麼這個array_unique不能按預期工作?

<?php 
     $merchant_string = '123-Reg|Woolovers|Roxio|Roxio|BandQ|Roxio|Roxio|Big Bathroom Shop|Roxio|Robert Dyas|Roxio|Roxio|PriceMinister UK|Cheap Suites|Kaspersky|Argos|Argos|SuperFit|PriceMinister UK|Roxio|123-Reg';  

     $merchant_array = explode('|', $merchant_string); 

     for($i = 0; $i<count($merchant_array); $i++) 
     { 
      $merchant_array = array_unique($merchant_array); 

      echo $merchant_array[$i] . '<br />'; 
     } 
?> 

我得到的結果是:

Woolovers 
Roxio 

BandQ 


Big Bathroom Shop 

Robert Dyas 

我要的是重複的了:|

回答

11

首先,你應該在循環之前調用它,因爲它只需要過濾一次。

其次,當你使用array_unique()密鑰將被保留,所以PHP是通過數組中不再視爲存在的指標試圖循環,並可能在年底會錯過一些列以及因爲count($merchant_array)現在返回一個較小的值。首先需要重置密鑰(使用array_values()),然後對其進行循環。

$merchant_array = array_values(array_unique($merchant_array)); 

    for($i = 0; $i<count($merchant_array); $i++) 
    { 
     echo $merchant_array[$i] . '<br />'; 
    } 

另外,使用foreach循環跳過array_values()電話:

$merchant_array = array_unique($merchant_array); 

    foreach ($merchant_array as $merchant) { 
     echo $merchant . '<br />'; 
    } 
+0

哇...感謝這麼多的解釋和代碼!像一種享受。 – 2010-11-22 03:08:29

相關問題