在php中从两个数组中查找差值
我想从数组中得到差值,还想比较差值来自哪个数组 第一个数组=>变量:$First\u数组在php中从两个数组中查找差值,php,arrays,Php,Arrays,我想从数组中得到差值,还想比较差值来自哪个数组 第一个数组=>变量:$First\u数组 Array {607,608,609} 第二个数组=>变量:$Second\u数组 Array {607,608,609,610} 想要得到像差值:610。。。。。。来自数组:-$second\u数组 Array {607,608,609,610} 我怎样才能得到它?请帮帮我……会有用的 <?php $a=Array(607,608,609,610); $b=Array (607,608,609
Array {607,608,609}
第二个数组=>变量:$Second\u数组
Array {607,608,609,610}
想要得到像差值:610。。。。。。来自数组:-$second\u数组
Array {607,608,609,610}
我怎样才能得到它?请帮帮我……会有用的
<?php
$a=Array(607,608,609,610);
$b=Array (607,608,609);
$result=array_diff($a,$b);
print_r($result);
?>
或者试试这个
<?php
$array2 = array(607,608,609);
$array1 = array(607,608,609,275);
foreach ($array1 as $value)
{
if(in_array($value, $array2))
{
$key = array_search($value, $array2);
$key1 = array_search($value, $array1);
unset($array2[$key]);
unset($array1[$key1]);
//echo "yes<br>";
}
}
$merge = array_merge($array1,$array2);
print_r($merge);
?>
您可以使用数组_diff()
尝试将它们合并,然后使用array_diff、array_diff_assoc和array_unique
$first=Array(607608609610);
$second=阵列(800607608609);
$Fcount=计数($first);
$arr=array\u merge($first,$second);
$arrc=array_diff($arr,array_diff_assoc($arr,array_unique($arr)));
foreach($arrc作为$key=>$value){
如果($key<$Fcount){
回显“第一个数组”。$value。“\n”;
}否则{
回显“第二个数组”。$value。“\n”;
}
}
编辑以添加如何查找值所在的数组 使用
试试这个:
$a = array(607,608,609,610);
$b = array(607,608,609);
$c = array_diff($a,$b);
print_r($c);
试试这个:
$a1=array(607,608,609,610);
$a2=array(607,608,609);
$result=array_diff($a1,$a2);
print_r($result);
Output :- Array ( [3] => 610 )
试试这个:
$first_array=array(607,608,609);
$second_array=array(607,608,609,610);
$result=calculate_diff($second_array,$first_array);
print_r($result);
function calculate_diff($array1,$array2)
{
$diff = [];
$larger_array = $array2;
$smaller_array = $array1;
if(count($array1) > count($array2))
{
$larger_array = $array1;
$smaller_array = $array2;
}
foreach($larger_array as $ele)
{
if(!in_array($ele,$smaller_array))
{
$diff[] = $ele;
}
}
return $diff;
}
$a1=数组(“a”=>“红色”、“b”=>“绿色”、“c”=>“蓝色”、“d”=>“黄色”);
$a2=数组(“e”=>“红色”、“f”=>“绿色”、“g”=>“蓝色”、“r”=>“黑色”)
$d=数组合并($a1,$a2)
输出:数组(“a”=>“红色”、“b”=>“绿色”、“c”=>“蓝色”、“d”=>“黄色”、“e”=>“红色”、“f”=>“绿色”、“g”=>“蓝色”、“r”=>“黑色”)
$result=array_diff($d,array_intersect($a2,$a1))
打印(结果);
输出:数组(“d”=>“黄色”、“r”=>“黑色”)
像这样使用数组_diff(第一个数组变量,第二个数组变量);使用数组_diff不正确工作…..对于此数组如果数组_diff($second_array,$first_array),则它将给出。。差异…但如果数组不同($first\u array,$second\u array)它将给出空值这可能重复不起作用我想以编程方式进行比较…不使用函数…因为在函数中我没有得到完美的输出当你必须使用foreach时,我如何从我得到的数组dieference值中得到?我想你可以看看键,看看它在哪。在这种情况下,var_dump返回[3]=610。由于$first的count()是4,因此它位于第一个数组中。这段代码可能会解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请您的回答添加解释,并说明适用的限制和假设。我怀疑这是否有帮助或有效。请通过解释说服我。请在代码周围添加“`”。像这样的``code`->
code
请通过解释它是如何工作的以及为什么它会有帮助来说服我。你不能用承诺来说服我。编辑时要小心,不要撤销别人对格式的改进。我怀疑这是否有用或有效。请通过解释说服我。你可以简单地运行这个程序。它将以Array(610)
的形式给出输出,这是您确实测试了它和输出的承诺。我想解释一下它是如何工作的,以及为什么它能解决这个问题。array_diff-计算数组的差异在这里检查更多
$a1=array(607,608,609,610);
$a2=array(607,608,609);
$result=array_diff($a1,$a2);
print_r($result);
Output :- Array ( [3] => 610 )
$first_array=array(607,608,609);
$second_array=array(607,608,609,610);
$result=calculate_diff($second_array,$first_array);
print_r($result);
function calculate_diff($array1,$array2)
{
$diff = [];
$larger_array = $array2;
$smaller_array = $array1;
if(count($array1) > count($array2))
{
$larger_array = $array1;
$smaller_array = $array2;
}
foreach($larger_array as $ele)
{
if(!in_array($ele,$smaller_array))
{
$diff[] = $ele;
}
}
return $diff;
}