使用循环比较PHP数组
我使用这段代码来比较两个php数组,我正确地获得了所有匹配项,但不幸的是,我没有成功地获得不匹配项。这是我的密码使用循环比较PHP数组,php,Php,我使用这段代码来比较两个php数组,我正确地获得了所有匹配项,但不幸的是,我没有成功地获得不匹配项。这是我的密码 <?php $filter1 = "blueberries,abc,cornstarch,sugar"; $cval = strtoupper($filter1); $parts1 = explode(',',$cval); $filter2 = "water,blueberries,sugar,cornstarch"; $values = strtou
<?php
$filter1 = "blueberries,abc,cornstarch,sugar";
$cval = strtoupper($filter1);
$parts1 = explode(',',$cval);
$filter2 = "water,blueberries,sugar,cornstarch";
$values = strtoupper($filter2);
$parts2 = explode(',', $values);
$m=0;
$nm=0;
for($i = 0; $i< count($parts1); $i++)
{
for($j = 0; $j< count($parts2); $j++)
{
if($parts1[$i] == $parts2[$j])
{
$m++;
$p[] = $parts1[$i];
}
else{
$nm++;
$q[] = $parts1[$i];
}
}
}
echo $m;
echo "<br />";
echo $nm;
echo "<br />";
print_r($p);
echo "<br />";
print_r($q);
?>
有人能帮我解决这个问题吗,因为我不想使用内置数组比较函数。我会使用内部函数来解决这个问题(如果我理解你的问题) 匹配:
$matched = array_intersect($parts1, $parts2);
区别:
$difference = array_diff($parts1, $parts2);
或者在您的for循环世界中:
<?php
$filter1 = "blueberries,abc,cornstarch,sugar";
$cval = strtoupper($filter1);
$parts1 = explode(',', $cval);
$filter2 = "water,blueberries,sugar,cornstarch";
$values = strtoupper($filter2);
$parts2 = explode(',', $values);
$matched = $not_matched = array();
for ($i = 0; $i < count($parts1); $i++)
{
if (in_array($parts1[$i], $parts2))
{
$matched[] = $parts1[$i];
}
else
{
$not_matched[] = $parts1[$i];
}
}
print_r($matched);
print_r($not_matched);
?>
写这么多代码而不是两行是违反我的信仰的
2) 创建大量代码而不使用
array.*
或in.\u array
函数的唯一原因必须是为了一些测验或测试,我想输入这些测验或测试并获胜。使用array\u intersect、array\u diff和array\u merge
$filter1 = "blueberries,abc,cornstarch,sugar";
$cval = strtoupper($filter1);
$parts1 = explode(',',$cval);
$filter2 = "water,blueberries,sugar,cornstarch";
$values = strtoupper($filter2);
$parts2 = explode(',', $values);
print_r(array_intersect($parts1, $parts2));
print_r(array_merge(array_diff($parts1, $parts2), array_diff($parts2, $parts1)));
数组([0]=>蓝莓[2]=>玉米淀粉[3]=>糖)数组([0]=>ABC[1]=>水)你在做两个数组的笛卡尔积。 如果您发现
$parts1[$i]==$parts2[$j]
,将$parts1[$i]
添加到$p
是正确的,但相反的假设(如果它们不同,则添加到$q
)是错误的。
您应该从$q
中的所有元素开始,当您有匹配项时,将其添加到$p
并将其从$q
中删除
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
这是php库函数。使用
array\u interest
和array\u diff
对不起,我想使用循环,谢谢。这就提出了一个问题,为什么要使用循环而不是内置函数?这太荒谬了,比较阵列后,需要再次执行for循环以比较其他阵列。停止对抗内置函数我猜数组()中的函数不是allowed@Dale啊…请在_array()中多使用一个循环…:P@NullPointer我有辞职的理由:)
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>