有谁能够告诉我,为什么这并不如预期的工作?

<?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

我要的是重复的了:|

有帮助吗?

解决方案

首先,你应该在循环之前调用它,因为它不仅需要过滤一次。

二,键当您使用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 />';
  }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top