質問

これは期待通りの仕事がない理由缶誰もが私に教えてください。

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

すべてのIほしいですが、重複がなくなっている:|

役に立ちましたか?

解決

それは一度だけフィルタ処理する必要があるため、

まず、あなたは、ループの前にそれを呼び出す必要があります。

第二には、キーはあなたが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 />';
  }

また、array_values()呼び出しをスキップするforeachループを使用します:

  $merchant_array = array_unique($merchant_array);

  foreach ($merchant_array as $merchant) {
        echo $merchant . '<br />';
  }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top