我一直在使用这个脚本来查找匹配和不匹配的数组项。
我的代码是。
$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
for($i=0; $i< count($parts1); $i++)
{
for($j=0; $j< count($parts2); $j++)
{
if($parts1[$i] == $parts2[$j])
{
$match[] = $parts1[$i];
} else {
$nomatch[] = $parts1[$i];
}
}
}
print_r($match);
echo "<br>";
print_r($nomatch);
通过使用此代码,我只获取匹配的项目而不是不匹配的项目。任何人都可以帮忙。 提前谢谢。
答案 0 :(得分:6)
您可以尝试使用array_intersect
和array_diff
$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
$match = array_intersect($parts1, $parts2);
$nomatch = array_diff($parts1, $parts2);
var_dump($match,$nomatch);
输出
array
0 => string 'red' (length=3)
1 => string 'green' (length=5)
2 => string 'blue' (length=4)
array
3 => string 'yellow' (length=6)
答案 1 :(得分:3)
这可以通过array_intersect和array_diff
来完成$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
$result = array_intersect($parts1 , $parts2 );
print_r($result);
和
$result = array_diff($parts1 , $parts2 );
print_r($result);
答案 2 :(得分:0)
因为嵌套循环不在黄色时运行 试试这个
$filter1 = "red,green,blue,yellow";
$filter2 = "red,green,blue,gray";
或
for($j=0; $j<= count($parts2); $j++)
答案 3 :(得分:0)
$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
$match = array();
$nomatch = array();
foreach($parts1 as $v){
if(in_array($v,$parts2))
$match[]=$v;
else
$nomatch[]=$v;
}
答案 4 :(得分:0)
试试这个
$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
foreach($parts1 as $first)
{
if(in_array($first, $parts2))
{
$match[] = $first;
}
else
{
$nomatch[] = $first;
}
}
print_r($match);
echo "<br>";
print_r($nomatch);
或者您可以使用array_diff来获取不匹配的项目
print_r(array_diff($parts1,$parts2));
并且对于匹配的项目使用
print_r(array_intersect($parts1,$parts2));
答案 5 :(得分:0)
尝试以下代码
$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue,purple";
$parts2 = explode(',', $filter2);
$matching = array_intersect($parts1, $parts2);
$non_matching = array_diff(array_merge($parts1, $parts2), $matching);
更改您的代码,该代码应与array_diff($parts1, $parts2);
for($i=0; $i< count($parts1); $i++)
{
$is_matching = false;
for($j=0; $j< count($parts2); $j++)
{
if($parts1[$i] == $parts2[$j])
{
$is_matching = true;
break;
}
}
if ($is_matching) {
$match[] = $parts1[$i];
} else {
$nomatch[] = $parts1[$i];
}
}