【问题标题】:Compare two arrays and result the matched one比较两个数组并得出匹配的结果
【发布时间】:2016-09-28 04:13:54
【问题描述】:

您好,我有以下代码结构

$gender = array('girl','boy','men','women');
$content = array('Fastrack men watch');

我想在内容中搜索性别并返回特定的性别,如下所示

$result='men'

如果任何性别匹配它应该在内容数组中搜索它应该返回该性别名称

提前谢谢你

【问题讨论】:

  • 只需将foreachstrposif 一起使用,是什么阻止你这样做?
  • strpos 返回计数,但我想要匹配的单词。 @鬼
  • @AmiteshKumar $gender 数组包含许多不同的字符串,而 $content 数组只包含一个字符串
  • @AmiteshKumar 怎么可能是重复的? array intersect 不检查子字符串,回答这个问题的那个 dup 问题的答案在哪里?
  • 您可以参考以下答案 - stackoverflow.com/questions/12315536/…

标签: php


【解决方案1】:
$gender = array('girl','boy','men','women');
$content = array('Fastrack men watch');
$ret=array();
foreach($gender as $val){
$pos = strpos($content[0], $val);
    if($pos!=false){
    $ret[]=$val;    
    }
}
echo "The gender found ".implode(',',$ret);

【讨论】:

  • 谢谢这也很完美,但我使用了不同的方法,因为我已经发布了答案
【解决方案2】:
$gender = array('girl','boy','men','women');
$content = array('Fastrack men watch');
$data= explode(" ",$content[0]);

$result = array_intersect($gender, $data);

这样我找到了确切的结果 谢谢指导

【讨论】:

    【解决方案3】:
            $gender_array = array('girl','boy','men','women');
            $content = 'Fastrack women watch girl';
            $content_array = explode(" ",$content);
    
            $result ="";
            foreach ($gender_array as $gender) {
               if(in_array($gender, $content_array)){
               $result = $result.",".$gender;
               }
            }
           echo $result = trim($result, ','); 
    

    这也显示了一个或多个的性别性别.. 例如:$content = 'Fasttrack 女装女装男装手表'; 结果为女孩,男孩,女人

    【讨论】:

      【解决方案4】:

      您可以使用array_intersect() 来执行您需要的操作。

      array_intersect() - 计算数组的交集

      array_intersect() 返回一个数组,其中包含所有参数中存在的 array1 的所有值。请注意,密钥会被保留。

      array_intersect() 函数比较两个(或更多)数组的值,并返回匹配项。

      此函数比较两个或多个数组的值,并返回一个数组,其中包含来自 array1 且存在于 array2、array3 等中的条目。

      返回值:返回一个数组,其中包含来自array1 的所有其他数组中存在的条目。

      <?php
      $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
      $a2=array("e"=>"red","f"=>"green","g"=>"blue");
      
      $result=array_intersect($a1,$a2);
      print_r($result);
      ?>
      

      输出:

      Array ( [a] => red [b] => green [c] => blue )
      

      注意:两个元素被认为相等当且仅当 (string) $elem1 === (string) $elem2。换句话说:当字符串表示相同时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        • 2019-02-03
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        相关资源
        最近更新 更多