这里的两个数组转储:PHP:检查的两个multidim阵列之间的差异
array(2) {
[0]=> array(7) {
["id"]=> string(1) "1"
["shoppinglist_id"]=> string(1) "1"
["product_id"]=> string(1) "1"
["amount"]=> string(1) "5"
["date_added"]=> string(10) "1326912709"
["name"]=> string(7) "Tunfisk"
["supplier_id"]=> string(1) "2"
}
[1]=> array(7) {
["id"]=> string(1) "2"
["shoppinglist_id"]=> string(1) "1"
["product_id"]=> string(1) "2"
["amount"]=> string(1) "5"
["date_added"]=> string(10) "1326912713"
["name"]=> string(3) "Lax"
["supplier_id"]=> string(1) "6"
}
}
array(2) {
[0]=> array(7) {
["id"]=> string(1) "5"
["shoppinglist_id"]=> string(1) "3"
["product_id"]=> string(1) "1"
["amount"]=> string(1) "5"
["date_added"]=> string(10) "1326912810"
["name"]=> string(7) "Tunfisk"
["supplier_id"]=> string(1) "2"
}
[1]=> array(7) {
["id"]=> string(1) "6"
["shoppinglist_id"]=> string(1) "3"
["product_id"]=> string(1) "2"
["amount"]=> string(1) "5"
["date_added"]=> string(10) "1326912810"
["name"]=> string(3) "Lax"
["supplier_id"]=> string(1) "6"
}
}
我试图做和array_diff(),但不支持多维数组。
于是我尝试这个功能:
public function multidimensional_array_diff($a1,$a2)
{
$r = array();
foreach ($a2 as $key => $second)
{
foreach ($a1 as $key => $first)
{
if (isset($a2[$key]))
{
foreach ($first as $first_arraykey => $first_value)
{
foreach ($second as $second_value)
{
if ($first_value == $second_value)
{
$true = true;
break;
}
}
if (!isset($true))
{
if($first_arraykey != "date_added" && $first_arraykey != "shoppinglist_id")
{
$r[$key][$first_arraykey] = $first_value;
}
}
unset($true);
}
}
else
{
$r[$key] = $first;
}
}
}
return $r;
}
这也不管用,返回我的差异,即不同的arent。
注意你可以看到它不会添加到差异数组,如果数组键是date_added和shoppinglist_id(因为在我的系统中这些是不同的)。
上面应该输出一个空的差异数组,因为这些数组之间没有区别(如果我们不看date_added和shoppinglist_id)。
我该如何正确使用这项工作?
能否请您格式化您的阵列drumps – jprofitt 2012-01-18 20:39:33
确定这里被格式化:http://pastebin.com/4HkFyBvy – Karem 2012-01-18 20:43:20