Здесь у меня есть этот массив:
$myArray = array(5) {
[0]=> string(62) " läs våra leveransvillkor/reservationer "[1]=> string(61) " läs våra leveransvillkor/reservationer "[2]=> string(60) " läs våra leveransvillkor/reservationer"[3]=> string(107) "om skorstenen bryter nock, ränndal, bjälke, el, vent etc tillkommer kostnad för vinklar eller avväxling"[4]=> string(59) "läs våra leveransvillkor/reservationer"}
Здесь четыре значения одинаковы. Поэтому я хочу оставить только одну.
Я пытался использовать array_unique
и даже я попробовал это:
array_map("unserialize", array_unique(array_map("serialize", $myArray)));
Но мне не удалось удалить дубликаты. Я думаю, проблема в особом характере.
Ваш var_dump показывает, что в ваших строках есть непечатаемые символы.
Вам нужно будет подготовить свои данные, удалив непечатаемые символы. Если вы в UTF-8, это должно сделать …
$myArray = preg_replace('/[\x00-\x1F\x7F]/u', '', $myArray);
Тогда вы сможете использовать:
$myArray = array_unique($myArray);
Или, конечно, объединить их в одну строку:
$myArray = array_unique(preg_replace('/[\x00-\x1F\x7F]/u', '', $myArray));
Если вы скажете, что есть только начальные и конечные пробелы для очистки, то это подойдет.
Код: (демонстрация)
$myArray = [
" läs våra leveransvillkor/reservationer ",
" läs våra leveransvillkor/reservationer ",
" läs våra leveransvillkor/reservationer",
"om skorstenen bryter nock, ränndal, bjälke, el, vent etc tillkommer kostnad för vinklar eller avväxling",
"läs våra leveransvillkor/reservationer"];
var_export(array_unique(array_map('trim', $myArray)));
это работа с array_unique
$myArray = array(
'0'=> "läs våra leveransvillkor/reservationer",
'1'=> "läs våra leveransvillkor/reservationer",
'2'=> "läs våra leveransvillkor/reservationer",
'3'=> "om skorstenen bryter nock, ränndal, bjälke, el, vent etc tillkommer kostnad för vinklar eller avväxling" ,
'4'=> "läs våra leveransvillkor/reservationer",
);
$result = array_unique($myArray);
print_r($result);