なぜ、このarray_unique作品期待しないよう?
-
27-09-2019 - |
質問
これは期待通りの仕事がない理由
缶誰もが私に教えてください。
<?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 />';
}
所属していません StackOverflow