我有一个名为mystique item的应用程序,用户必须猜测水印后面的项目。水印时不时地显示出来,一切都很完美,但我在猜测单词方面有一个“小”问题。我已经在数组中添加了单词,用逗号分隔,我在我的php中分解了那个数组,我想知道的是,如果用户弄乱了这些单词,我想知道的是如何让应用程序接受这些单词,例如,我的短语是:"apple iphone4",即使用户写了"iphone4 apple“,我也想让它正确。
下面是我使用的数组:
$sp = explode(",",$gt);
$sp = array_map('trim', $sp);
if(in_array($val, $sp)) { // guess correct
echo '1';
}
else{ // guess wrong
echo '2';
}发布于 2013-09-23 18:13:44
看看这个
$sp = explode(",",$gt);
$sp = array_map('trim', $sp);
if(in_array($val, $sp)) { // guess correct
echo '1';
}
else{
// and it only execute when if will fail
foreach($sp as $value){
$check= array_diff(explode(" ", $val),explode(" ",$value));
if(empty($check)){
// above like make an array separating by space and match with so that
// it will match "iphone4 pad" and "pad iphone4" as equal
//break;
}else{
}
}
// guess wrong
//echo '2';
}发布于 2013-09-23 18:44:45
值
在下面的代码中,$arr是等同于$sp的数组,$input是等同于$val的用户输入。
示例
如果用户输入为iphone apple,则代码将与apple iphone匹配。
如果用户输入apple iphone 4,它也将与apple iphone匹配。为了防止这种情况发生,您需要取消注释21和22行上的代码。
代码
$arr = array(
'apple iphone',
'apple ipad',
'apple ipod',
'apple iphone5'
);
$input = 'apple iphone 4';
$inputArray = array_filter(explode(' ', $input));
$matched = TRUE;
if(!in_array(trim($input), $arr)){
$matched = FALSE;
foreach($arr as $item){
$itemMap = explode(' ', $item);
$comparisonResult = array_diff($itemMap, $inputArray);
//$comparisonResult2 = array_diff($inputArray, $itemMap);
if(empty($comparisonResult) /*&& empty($comparisonResult2)*/){
$matched = TRUE;
break;
}
}
}
if($matched)
echo 1;
else
echo 2;https://stackoverflow.com/questions/18956299
复制相似问题