比较2个数组并使用PHP检索差异

时间:2014-06-15 14:56:15

标签: php arrays

我不是PHP专家,但我正在尝试在PHP中比较2个数组(数据库关系和架构),我需要检索这两个数组之间的差异,我正在使用这个PHP代码

    <?php

function maxEntities($rela, $db){
    $maxenty = array();
    $found   = false;

     foreach ($rela as $valor1) {  
      print $valor1[0] . " |  ";
    }

    print " <br \>";
     foreach ($db as $valor2) {

      print  $valor2[0] . " |  ";
    }
 $maxenty = array_diff($rela[0], $db[0]);

    print " <br \> <br \>";

    foreach ($maxenty as $valor) {

      print "  " . $valor;
    }
}

并且此代码为我提供了此输出

 Sale | Customer | Sale_Fee | Sale | Location | Sale | Sale | Sale_Iten | Product | Customer | Location | Sale_Iten | Sale_Fee | Region | 
Customer | Customer_Type | Fee_Type | Location | Location_Type | Period | Product | Product_Type | Region | Sale | Sale_Fee | Sale_Iten | State | 

Sale Customer_Cust_Id 

,我期望的输出是

  

期间,客户类型,州,地点类型,产品类型和费用类型

我如何解决我的问题?

我也试过foreach,但也给了我错误的输出

 foreach ($rela as $relaV) {
        foreach ($db as $dbV) {

            if ($dbV[0] == $relaV[0]) {
                $found = true;
            }
            if (!$found) {
                $found   = false;
               $maxenty[] = $dbV[0];  
            } 
        }
    }

在这种情况下我的输出是

Customer
Customer_Type
Fee_Type
Location
Location_Type
Period
Product
Product_Type
Region

和Customer,Region,Location都在两个数组中

1 个答案:

答案 0 :(得分:1)

目前还不是很清楚,你的阵列是如何构建的。到目前为止,我从您的代码中猜出以下结构:

$rela = array(array('Sale'), array('Customer'), array('Sale_Fee'), array('Sale'), array('Location'), array('Sale'), array('Sale'), array('Sale_Iten'), array('Product'), array('Customer'), array('Location'), array('Sale_Iten'), array('Sale_Fee'), array('Region'));
$db = array(array('Customer'), array('Customer_Type'), array('Fee_Type'), array('Location'), array('Location_Type'), array('Period'), array('Product'), array('Product_Type'), array('Region'), array('Sale'), array('Sale_Fee'), array('Sale_Iten'), array('State'));

如果这是数组的结构,那么你可以使用以下代码来获得差异(从你的foreach方法中采用,可能还有其他方法):

$maxenty = array();
foreach ($db as $dbValue) {
    $found = false;
    foreach ($rela as $relaValue) {
        if ($relaValue[0] == $dbValue[0]) {
            $found = true;
            break;
        }
    }
    if (!$found) {
        $maxenty[] = $dbValue[0];
    }
}

print_r($maxenty);

这将为您提供$maxenty,如下所示:

Array
(
    [0] => Customer_Type
    [1] => Fee_Type
    [2] => Location_Type
    [3] => Period
    [4] => Product_Type
    [5] => State
)