Ответ 1
Рассмотрим сначала разделение аргументов ключевых слов пробелами, затем поиск уникальных значений:
$posted = array_unique(explode(' ', str_replace("\n", ' ', $posted)));
Я искал ответ для этого, но никто, похоже, не помогает мне в конкретной ситуации. Я пытаюсь опубликовать список слов, а затем удалить дубликаты данных (слов), которые приходят из формы.
По какой-то причине я не могу заставить array_unique работать. PHP продолжает давать мне ошибки, говоря, что мой пост-массив является строкой. Но если я попытаюсь использовать взрыв, он говорит, что я использую массив. На самом деле очень запутано сейчас и очень расстроено.
Мой код прост:
if(!empty($_POST['keywords']))
{
$posted = $_POST['keywords'];
$posted = array_unique($posted);
echo $posted;
}
Я не обязательно ищу точный ответ, но некоторые рекомендации, поэтому я могу лучше понять, что я делаю неправильно здесь.
Форма:
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<p>
<textarea name="keywords" rows="20" columns="120"></textarea>
</p>
<p>
<input type="submit" name="submit" />
</p>
</form>
Рассмотрим сначала разделение аргументов ключевых слов пробелами, затем поиск уникальных значений:
$posted = array_unique(explode(' ', str_replace("\n", ' ', $posted)));
Возможно, вам стоит изучить использование array_filter
Таким образом вы можете определить свою собственную функцию обратного вызова для максимальной строгости своих удаленных...
http://php.net/manual/en/function.array-filter.php
Также: Вы пытались испортить флаги array_unique?
http://php.net/manual/en/function.array-unique.php
Поле ваших ключевых слов настраивается как текстовое поле, поэтому при публикации вы публикуете строку. Попробуйте следующее:
$posted = $_POST['keywords'];
$postedKeywords = explode(' ', $posted);
$posted = array_unique($postedKeywords);
Предыдущие ответы велики, но поскольку слова вводятся в текстовое поле, разделитель будет непредсказуем. Вместо этого используйте вместо этого регулярное выражение:
preg_match_all('/([^\s]+)/', $_POST['keywords'], $matches);
$unique_words = array_unique($matches[0]);