我不是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都在两个数组中
答案 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
)