【问题标题】:array_intersect and match multiple values same timearray_intersect 并同时匹配多个值
【发布时间】:2021-10-31 08:48:05
【问题描述】:

在这个脚本中,你可以看到我尝试验证是否有 2 个值 - Jhon 34 - 同时存在于名为 $values 的字符串中,当我发送搜索时,我使用了 2 o 3 个单词和验证的想法如果在数组中准确找到这 3 个或 2 个单词等

<?php  
$values="Jhon,Smith,252546,34,house,car,phone";
$post="Jhon 34";

$exp_values=explode(",",$values); 
$exp_post=explode(" ",$post);

$result=array_intersect($exp_post,$exp_values);

foreach ($result as $results) {    
    if(count($result)==count($exp_post)) { 
        echo $results; 
        print "<br>"; 
    }
} 
?>

仅当相交元素与 $post 中的数字相同时,我才使用 count 来显示结果,因为 $post 显示值我想在 $values 中搜索,如果在其中找到相同的单词,结果就可以了$价值

结果是错误的,因为检测到一个词,但我需要检测我发送的所有词,如果数组有所有这些词结果必须是好的,如果没有这个结果那就不好了

【问题讨论】:

  • 您期望这里有什么结果?这会输出Jhon&lt;br&gt;34&lt;br&gt;,可能会给出一个不起作用的例子。
  • 我搜索 $exp_post 中的单词,它完全没有找到结果,它是坏的或什么都没有,如果数组结果显示中存在 Jhon 34

标签: php arrays array-intersect


【解决方案1】:

你有 ifforeach 倒退。先检查计数是否相同才知道帖子有效,然后显示结果。

您可以简单地 implode() $result 代替循环:

if (count($result) == count($exp_post)) {
    echo implode('<br>', $result);
} else {
    echo "Invalid input";
}

【讨论】:

  • 我不搜索这个,我搜索单词 Jhon 34,在其他情况下,如果我使用 Jhon 34 xxx,结果很糟糕并且不完全存在 3 个单词,但我不搜索 br 什么都没有,谢谢
  • 这就是它的作用。如果计数不同,则$post 中的某些单词不在$values 中。
  • 如果我搜索 2 个值,则必须在数组 $values 中找到相同的值,如果搜索没有相同的值 array_intersect 不一定不显示任何内容或结果为负,问题它认为它是错误的,因为它不起作用在数组值中查找多个值
  • 输入Jhon 34是否应该有效?
  • 是的,例如,如果我搜索 Jhon 34 结果肯定没问题,如果我搜索 Jhon 34 45 结果一定不好,完全正确
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多