【问题标题】:Check if string contains a value in 2 arrays检查字符串是否包含 2 个数组中的值
【发布时间】:2021-11-10 09:18:16
【问题描述】:

我有 2 个数组和 1 个字符串。 我正在尝试检测一个字符串是否包含至少一个存储在每个数组中的值。

$array1 = array('night', 'morning', 'afternoon');
$array2 = array('robert','david','justin');
$string ='robert read a book this morning';

我的代码:

if (strstr($string, $array1) && strstr($string, $array2)){
    echo "Match found";}else{ echo "Not found";}

有没有正确的做事方式?

【问题讨论】:

  • 得到正确答案了吗?你认真测试了吗?那你应该可以告诉我们它是否正确!
  • 您当前的尝试应该会给您一个警告/致命错误(取决于 PHP 版本),因为 strstr 的第二个参数不能是数组。
  • “有正确的做事方式吗?” - 遍历第一个数组,并分别检查每个项目。如果找到匹配项,设置一个标志(并退出循环),对第二个数组重复该过程。之后检查这两个标志是否都为真...

标签: php arrays


【解决方案1】:
<?php
$array1 = ['night', 'morning', 'afternoon'];
$array2 = ['robert','david','justin'];
$string ='robert read a book this morning';
$array = explode(' ', $string);

if (! empty(array_intersect($array, $array1))
    || ! empty(array_intersect($array, $array1))
) {
    echo 'Match found';
} else {
    echo 'Not Found';
}

【讨论】:

  • 我认为|| 应该是&amp;&amp;,因为规范中说“每个数组中至少存储一个值”
  • @RiggsFolly 如果您需要在字符串包含两个数组中的单词时回显“找到匹配项”,那么可以。
  • 是的,这就是“each 数组中至少存储一个值”对我的意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多