比较一个字符串和一个PHP数组,仅显示匹配项。

3

我有一个类似下面这样的字符串:

"illustration,drawing,printing"

我有一个如下所示的数组:

Array (
    [0] => illustration
    [1] => drawing
    [2] => painting
    [3] => ceramics
)

我该如何比较这两个数据并只显示在字符串和数组中都存在的项目?

所以在上面的例子中,我想要输出类似这样的内容:

技能: 插图, 绘画

谢谢!

4个回答

2

use explode(), array_intersect() and implode()

<?php

$string = "illustration,drawing,printing";

$array = Array (
    0 => 'illustration',
    1 => 'drawing',
    2 => 'painting',
    3 => 'ceramics'
);

$stringArray = explode(',',$string);

$common = array_intersect($stringArray,$array);

echo "Skills :".implode(',',$common);

https://3v4l.org/StqYN


1
两个答案都可以,但这个实现似乎是最简单的,也更容易让我理解。谢谢! - LBF
1
哈哈,真不错,我甚至没有想到使用数组交集,而这显然是最简单的方法 :P - Crimin4L

1
你可以像这样做:

功能:

    function functionName($string, $array){
        $skills = '';
        // Create a temp array from your string breaking appart from the commas
        $temparr = explode(",", $string);
        // Iterate through each of the words now
        foreach($temparr as $str){
            // Check to see if our current string is in the array provided
            if(in_array($str, $array)){
                // If it is, then add it to the string "skills"
                $skills .= "${str}, ";
            }
        }
        // Cut the last space and comma off the end of the str.
        $skills = substr($skills, 0, strlen($skills) - 2);
        // Return our results
        return 'SKILLS: '.$skills;
    }

使用方法:

    $string = "illustration,drawing,printing";
 
    $array = Array (
        0 => "illustration",
        1 => "drawing",
        2 => "painting",
        3 => "ceramics"
    );
    // Just input our string and the array we want to search through
    echo(functionName($string, $array));

在线演示:

https://ideone.com/qyqgzo http://sandbox.onlinephpfunctions.com/code/65dc988370ad8ce61ab5ccbc232af4bcf8bd3d42


1
这个可行!我选择了其他选项作为我的答案,因为那个更无缝地与我的现有代码配合使用。谢谢! - LBF

0
首先将该字符串转换为数组。
使用array_intersect();函数。
$str = "illustration,drawing,printing";
 
 $ar1 = explode(",",$str);

print_r ($ar1);

$ar2 = Array ("illustration","drawing","painting","ceramics"); 

echo "<br>";
 print_r ($ar2);


$result = array_intersect($ar1, $ar2);


echo "Skills :".implode(',',$result);

输出:

Array ( 
  [0] => illustration 
  [1] => drawing 
  [2] => printing 
)

Array ( 
  [0] => illustration 
  [1] => drawing 
  [2] => painting 
  [3] => ceramics 
)

SKILLS: illustration, drawing

0
你可以用 OR | 替换逗号 , 并将字符串单词连接起来,然后使用 grep 进行匹配。这将在每个数组元素中匹配单词的任何位置:
$result = preg_grep("/".str_replace(",", "|", $string)."/", $array);

如果你只想要精确匹配,那么可以使用以下代码: "/^(".str_replace(",", "|", $string).")$/"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接