简体   繁体   English

如何在php中找到一维数组与一维数组的差异

[英]how to find difference in single dimensional array with single dimensional array in php

I have two array two array. 我有两个数组两个数组。 First is multidimensional and other is single dimensional. 首先是多维,其他是一维。 I want to find difference between them. 我想找到它们之间的区别。 How do I found. 我如何找到。

$arrayresult $ arrayresult

Array 1 阵列1

Array ( 
    [0] => Array ( [0] => ishani.lad [1] => 9033187384 ) 
    [1] => Array ( [0] => rajkumar.prajapati [1] => 8460078459 ) 
    [2] => Array ( [0] => lokesh.bhandari [1] => 9687060900 ) 
    [3] => Array ( [0] => shishanshu.rai [1] => 8401915337 ) 
    [4] => Array ( [0] => vishal.dake [1] => 9879815299 ) 
    [5] => Array ( [0] => mohsin [1] => 8347163123 )
)

$useduser $ useduser

Array 2 阵列2

Array (
    [0] => ishani.lad 
    [1] => rajkumar.prajapati
    [2] => lokesh.bhandari     
)

I need difference as result as below Result 我需要以下结果作为结果

Array (
    [0] => Array ( [0] => shishanshu.rai [1] => 8401915337 ) 
    [1] => Array ( [0] => vishal.dake [1] => 9879815299 ) 
    [2] => Array ( [0] => mohsin [1] => 8347163123 )
)

I have used solution as 我已经使用解决方案

$resultremainig = [];
foreach($arrayresult as $val2){                            
    if(!in_array($val2[0], $useduser)){                                                  
        echo $val2[0]."<br>";
        $resultremainig[] = $val2;
    }                            
}

But it show last record also. 但它也显示最后的记录。 Result of above code is as below. 以上代码的结果如下。 It always show me last record in second array's also 它总是向我显示第二个数组中的最后一个记录

Array (
    [0] => Array ( [0] => lokesh.bhandari [1] => 9687060900 ) 
    [1] => Array ( [0] => shishanshu.rai [1] => 8401915337 ) 
    [2] => Array ( [0] => vishal.dake [1] => 9879815299 ) 
    [3] => Array ( [0] => mohsin [1] => 8347163123 )
)

You could use array_filter() : 您可以使用array_filter()

$output = array_filter($arrayresult, function($a) use ($useduser) {
  return !in_array($a[0], $useduser);
});

Hi You can also try this 嗨,你也可以尝试这个

    $one = array(array('ishani.lad',9033187384),array('rajkumar.prajapati',8460078459),array('lokesh.bhandari',9687060900),array('shishanshu.rai',8401915337),array('vishal.dake',9879815299),array('mohsin',8347163123));
            $two = array('ishani.lad','rajkumar.prajapati','lokesh.bhandari');
            foreach($one as $array){
                    if(!in_array($array[0],$two)){              
                    $final[] = $array;
                }           
            }
 echo "<pre>";print_r($final);

Output 输出量

   Array
(
    [0] => Array
        (
            [0] => shishanshu.rai
            [1] => 8401915337
        )

    [1] => Array
        (
            [0] => vishal.dake
            [1] => 9879815299
        )

    [2] => Array
        (
            [0] => mohsin
            [1] => 8347163123
        )

)

If you wanted you could try using nested loops like so: 如果您愿意,可以尝试使用嵌套循环,如下所示:

<?php

    $arrOne = $arrFinal = [
        ["ishani.lad",         9033187384],
        ["rajkumar.prajapati", 8460078459],
        ["lokesh.bhandari"   , 9687060900],
        ["shishanshu.rai"    , 8401915337],
        ["vishal.dake"       , 9879815299],
        ["mohsin"            , 8347163123],
    ];

    $arrTwo = [
        "ishani.lad",
        "rajkumar.prajapati",
        "lokesh.bhandari",
    ];

    foreach($arrOne as $key=>$item){
        foreach($arrTwo as $k=>$v){
            if(in_array($v, $item)){
                unset($arrFinal[$key]);
            }
        }
    }

    var_dump($arrFinal);

    // PRODUCES:::
    array (size=3)
      3 => 
        array (size=2)
          0 => string 'shishanshu.rai' (length=14)
          1 => int 8401915337
      4 => 
        array (size=2)
          0 => string 'vishal.dake' (length=11)
          1 => int 9879815299
      5 => 
        array (size=2)
          0 => string 'mohsin' (length=6)
          1 => int 8347163123

Trim the value before checking in $useduser array 在检入$useduser数组之前修剪值

$resultremainig = [];
foreach($arrayresult as $val2){  
  // this removes any extra spaces from the search string                          
  if(!in_array(trim($val2[0]), $useduser)){                                               
  echo $val2[0]."<br>";
  $resultremainig[] = $val2;
}     

You need to use the array_diff function. 您需要使用array_diff函数。

Store your 2 arrays in variables and compare them. 将您的2个数组存储在变量中并进行比较。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM