我一直在寻找这个问题的答案,但似乎没有一个能帮助我的具体情况。我试图发布一个单词列表,然后删除来自表单的重复数据(单词)。
出于某种原因,我似乎无法使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>
答案 0 :(得分:0)
首先考虑使用空格分割关键字参数,然后找到唯一值:
$posted = array_unique(explode(' ', str_replace("\n", ' ', $posted)));
答案 1 :(得分:0)
也许您应该考虑使用array_filter
通过这种方式,您可以定义自己的回调函数,以便最大限度地恢复您的删除...
<强> http://php.net/manual/en/function.array-filter.php 强>
另外:您是否尝试过使用array_unique标志?
<强> http://php.net/manual/en/function.array-unique.php 强>
答案 2 :(得分:0)
您的关键字表单字段设置为textarea,因此当您发布时,您正在发布字符串。试试这个:
$posted = $_POST['keywords'];
$postedKeywords = explode(' ', $posted);
$posted = array_unique($postedKeywords);
答案 3 :(得分:0)
之前的答案很棒,但由于这些单词正在输入到文本字段,因此分隔符将无法预测。请考虑使用正则表达式:
preg_match_all('/([^\s]+)/', $_POST['keywords'], $matches);
$unique_words = array_unique($matches[0]);