in_array и array_unique не работают

Мой код по-прежнему отображает повторяющиеся значения, даже после попытки обеих функций in_array а также array_unique, Я получаю значения из базы данных. Некоторые строки имеют несколько значений.
Я хочу разбить их запятыми, а затем удалить дубликаты.
Пожалуйста, помогите, заранее спасибо.

<?php while ($row = mysql_fetch_array($sql)) {
$mark=explode(',', $row['sku']);
foreach($mark as $out) {
if(!in_array($out, $array)){
$array[] = $out;
}
}

}
$unique_array = array_unique($array, SORT_REGULAR);
natsort($unique_array);
print_r($unique_array);
?>

0

Решение

Вот пример кода, который должен делать то, что вы хотите: http://sandbox.onlinephpfunctions.com/code/4895a5b39c555835e378114eabc7ed78c6811285

<?php

// I create some sample data
$rows = [['sku' => 'a,b,c'], ['sku' => 'c,d,e'], ['sku' => 'e,f,g']];

$array = [];

// You want to replace this with your while loop
foreach ($rows as $row) {
$mark = explode(',', $row['sku']);

foreach ($mark as $out) {
if (!in_array($out, $array)) {
array_push($array, $out);
}
}

}

// I don't think you need this here, because you already ensure that the array won't contain duplicates
$unique_array = array_unique($array, SORT_REGULAR);

natsort($unique_array);
var_dump($unique_array);
var_dump($array);

Так что используя ваш while ($row = mysql_fetch_array($sql)) это должно быть как:

<?php

$array = [];
while ($row = mysql_fetch_array($sql)) {
$mark = explode(',', $row['sku']);

foreach ($mark as $out) {
if (!in_array($out, $array)) {
array_push($array, $out);
}
}

}

natsort($unique_array);
var_dump($unique_array);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]