PHP数组比较并查找匹配项和不匹配项
我一直在使用此脚本查找匹配和非匹配的数组项 我的密码是PHP数组比较并查找匹配项和不匹配项,php,Php,我一直在使用此脚本查找匹配和非匹配的数组项 我的密码是 $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($
$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);
$filter1=“红、绿、蓝、黄”;
$parts1=分解(“,”,$filter1);
$filter2=“红、绿、蓝”;
$parts2=分解(“,”,$filter2);
对于($i=0;$i”;
打印(nomatch);
通过使用此代码,我只得到匹配的项,而不是不匹配的项。有人能帮忙吗。
提前感谢。这可以由和完成
及
您可以尝试使用
array\u intersect
和array\u 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)
因为嵌套循环不会在黄色时间运行 试试这个
$filter1 = "red,green,blue,yellow";
$filter2 = "red,green,blue,gray";
或
对于($j=0;$j试试这个
$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);
和匹配的项目使用
print_r(array_intersect($parts1,$parts2));
请尝试下面的代码
$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);
($i=0;$i
{
$is_matching=false;
对于($j=0;$j
您可以使用查找匹配值,使用查找不匹配值
在这里你可以看到
??你到底想在这里做什么?实际上我想用strpos来比较字符串值你到底想做什么?如果(strpos($parts1[$j],$parts2[$i])!==false)我不能在数组函数中使用,我想用这个if语句
$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;
}
$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);
print_r(array_diff($parts1,$parts2));
print_r(array_intersect($parts1,$parts2));
$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);
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];
}
}
/**
* @param $arr
*/
function pr($arr)
{
echo '<pre>';
print_r($arr);
echo '</pre>';
}
$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);
pr($match);
pr($nomatch);
Array
(
[0] => red
[1] => green
[2] => blue
)
Array
(
[3] => yellow
)