0

我有一个名为 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';
}
4

2 回答 2

0

检查这个

$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-23T10:13:44.023 回答
0

价值观

以下$arr是与您等效的数组,$sp并且$input是与您等效的用户输入$val

例子

如果用户输入是iphone apple,则代码将与apple iphone.

如果用户输入apple iphone 4它也将匹配apple iphone以阻止这种情况发生,您将需要取消注释行2122.

代码

$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;
于 2013-09-23T10:44:45.450 回答