Я боролся с незначительной проблемой с array_unique в течение пары дней.
Каким-то образом выход всегда оставляет последний дубликат в массиве.
Я получаю текст из текстового поля в виде HTML
$IDs = trim($_POST['IDs']);
$IDs = explode("\n", $IDs);
$IDs = array_filter($IDs, 'trim');
$ID = array_unique($IDs,0);
print_r($ID);
образец ввода:
012345
0123456
01234567
012345
0123456
01234567
012345
0123456
01234567
образец вывода:
Array ( [0] => 012345 [1] => 0123456 [2] => 01234567 [3] => 01234567 )
образец ввода:
012345
0123456
01234567
012345
0123456
01234567
012345
0123456
образец вывода:
Array ( [0] => 012345 [1] => 0123456 [2] => 01234567 [3] => 0123456 )
не уверен, почему последний дубликат продолжает пропускаться.
Я уверен, что что-то упустил, но не могу понять это.
Добавил цикл foreach, надеясь это исправить, но даже при этом я продолжаю получать один и тот же результат.
Вы должны использовать array_map
вместо array_filter
,
Подобно:
$IDs = trim($_POST['IDs']);
$IDs = explode("\n", $IDs);
$IDs = array_map('trim', $IDs);
$ID = array_unique($IDs,0);
print_r($ID);
Я исправил ваш формат данных и foreach()
не нужно: —
<?php
$IDs = "012345\n0123456\n01234567\n012345\n0123456\n01234567\n012345\n0123456\n01234567";
$IDs = explode("\n", $IDs);
$IDs = array_unique($IDs,0);
print_r($IDs);
?>
и вывод будет:
Array
(
[0] => 012345
[1] => 0123456
[2] => 01234567
)
Постскриптум Я понял, что также array_filter
было ненужным.