Warum nicht diese array_unique wie erwartet?
-
27-09-2019 - |
Frage
Kann jemand mir sagen, warum dies nicht funktioniert wie erwartet?
<?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 />';
}
?>
Die Ergebnisse, die ich bekommen ist:
Woolovers
Roxio
BandQ
Big Bathroom Shop
Robert Dyas
Alles, was ich will, ist die Duplikate weg: |
Lösung
Als erstes sollten Sie es vor der Schleife anrufen, da es nur einmal werden muss gefiltert.
Zweitens werden die Schlüssel erhalten, wenn Sie array_unique()
verwenden, so PHP-Schleife versucht, durch nichtmehr vorhanden Indizes in Ihrem Array und kann einige verpassen am Ende, wie gut, weil count($merchant_array)
jetzt einen kleineren Wert zurückgibt. Sie müssen die Schlüssel zum Zurücksetzen zuerst (mit array_values()
), dann Schleife es.
$merchant_array = array_values(array_unique($merchant_array));
for($i = 0; $i<count($merchant_array); $i++)
{
echo $merchant_array[$i] . '<br />';
}
Alternativ können Sie auch eine foreach-Schleife den array_values()
Aufruf überspringen:
$merchant_array = array_unique($merchant_array);
foreach ($merchant_array as $merchant) {
echo $merchant . '<br />';
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow