这是另一个问题的延续,我忘了问完整的问题。运气,我做了,因为我正要问错误的问题。好的我有以下两个数组
Array ( [idAsset] => 10000005 [AssetName] => HP )
Array ( [idAsset] => 10000006 [AssetName] => HP Server )
Array ( [idAsset] => 10000009 [AssetName] => HP Laptop )
Array ( [idAsset] => 10000010 [AssetName] => Office Printer )
Array ( [idAsset] => 10000023 [AssetName] => test )
Array ( [idAsset] => 10000023 [AssetName] => test )
我使用以下代码
获得了这些代码 $firstArray = array();
$secondArray = array();
do{
array_push($firstArray,$array1);
}while($array1 = mysql_fetch_assoc($AssetUp));
do{
array_push($secondArray ,$array2);
}while($array2 = mysql_fetch_assoc($DocUp));
$array3 = array_diff_key($firstArray, $secondArray);
print_r($array3);
然而,这给我留下了以下内容:
Array (
[2] => Array ( [idAsset] => 10000006 [AssetName] => HP Server )
[3] => Array ( [idAsset] => 10000009 [AssetName] => HP Laptop )
[4] => Array ( [idAsset] => 10000010 [AssetName] => Office Printer )
[5] => Array ( [idAsset] => 10000023 [AssetName] => test ) )
似乎是遗漏了第一个循环并且还包括测试资产
我试图留下一个不包含两个阵列中找到的项目的数组。例如,从上面10000023测试将从两个数组中删除,留下我与$ firstArray的前4行(这就是为什么第一个问题会出错)我只想要差异而不是相似之处。
答案 0 :(得分:0)
我假设,您的数组如下:
$data = array( array( "idAsset" => 10000005, "AssetName" => "HP" ),
array( "idAsset" => 10000006, "AssetName" => "HP Server" ),
... );
array_diff_assoc不会检查任何子数组。因此,在您的情况下,它只会比较您所需要的数字指标。
一个好主意可能是使用您要比较的idAsset
作为数组键:
$data = array( "10000005" => array( "idAsset" => 10000005, "AssetName" => "HP" ),
"10000006" => array( "idAsset" => 10000006, "AssetName" => "HP Server" ),
... );
如果您现在通过array_diff_key
对它们进行比较,它将仅返回键中的任何差异。因为这是你的标准......voilá