我正在尝试从文本字段中删除重复项。文本字段自动建议输入,并且仅允许用户从中进行选择。 但是,用户可以选择多次选择相同的输入字段。它是一个输入字段,用于说明数据库中每个人的名字和姓氏。 首先,这是我的代码,用于修剪一些未打开的字符,然后通过数组将其与先前的输入进行比较。
if(!empty($_POST['textarea'])){
$text = $_POST['textarea'];
$text= ltrim ($text,'[');
$text= rtrim ($text,']');
$toReplace = ('"');
$replaceWith = ('');
$output = str_replace ($toReplace,$replaceWith,$text);
$noOfCommas = substr_count($output, ",");
echo $output.'<br>';
$tempArray = (explode(",",$output));
$finalArray[0] = $tempArray[0];
$i=0;
$j=0;
$foundMatch=0;
for ($i; $i<$noOfCommas; $i++) {
$maxJ = count($finalArray);
for ($j; $j<$maxJ; $j++) {
if ($tempArray[$i] === $finalArray[$j]) {
$foundMatch ===1;
}
}
if ($foundMatch === 0) {
array_push($finalArray[$j],$tempArray[$i]);
}
}
我做错了什么?
答案 0 :(得分:2)
在检查值是否相等时,在此部分中:
if ($tempArray[$i] === $finalArray[$j]) {
$foundMatch ===1;
}
应该是:
if ($tempArray[$i] === $finalArray[$j]) {
$foundMatch = 1;
}
这样你就可以设置变量,而不是检查它是否等于1.你也可以在找到第一个匹配时打破内部for循环。
答案 1 :(得分:0)
我认为这应该有效:
if (!empty($_POST['textarea'])){
$words = explode(',',str_replace('"', '', trim($_POST['textarea'], ' \t\n\r\0\x0B[]'));
array_walk($words, 'trim');
foreach ($words as $pos=>$word){
$temp = $words;
unset($temp[$pos]);
if (in_array($word, $temp))
unset($words[$pos]);
}
}
echo implode("\n", $words);
首先它读取textarea中的所有单词,删除'“'然后修剪。之后它会创建一个单词列表(explode),然后是每个单词的修剪。 然后它检查列表中的每个单词以查看它是否存在于该数组中(该pos除外)。如果它存在,那么它将删除它(未设置)。