Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从两个数组中查找差值_Php_Arrays - Fatal编程技术网

在php中从两个数组中查找差值

在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

我想从数组中得到差值,还想比较差值来自哪个数组

第一个数组=>变量:$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);
$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;
}