我有一个数组数组,如下所示。该数组包含3个数组,3个数组中的每一个都有18个元素。我想删除整个父数组([0],[1],[2]),如果数组中的所有18个元素与任何其他数组中的18个元素相同,除了[transaction_id]和[date]。因此剩余的16个元素必须相同才能使数组被认为是重复的并且从数组中删除父数组。
任何帮助将不胜感激。我搜索了这个网站,但找不到关于这个特定问题的问题。
[0] => Array
(
[transaction_id] => 3474
[date] => 2011-09-20
[location] => Kansas City
[year] => 2005
[year_diff] => 0
[make] => Ford
[make_id] => 19
[model] => F150 Sc Cab
[model_id] => 478
[subseries] => Lariat
[color] => Dk Grn
[doors] => X
[cylinders] => 8
[radio] => CD
[odometer] => 78029
[odometer_difference] => -4971
[odometer_difference_abs] => 4971
[price] => 9400
)
[1] => Array
(
[transaction_id] => 1843
[date] => 2011-09-21
[location] => Kansas City
[year] => 2005
[year_diff] => 0
[make] => Ford
[make_id] => 19
[model] => F150 Sc Cab
[model_id] => 478
[subseries] => Lariat
[color] => Dk Grn
[doors] => X
[cylinders] => 8
[radio] => CD
[odometer] => 78029
[odometer_difference] => -4971
[odometer_difference_abs] => 4971
[price] => 9400
)
[2] => Array
(
[transaction_id] => 7778
[date] => 2011-10-05
[location] => Kansas City
[year] => 2005
[year_diff] => 0
[make] => Ford
[make_id] => 19
[model] => F150 Crew Cab
[model_id] => 19
[subseries] => XLT
[color] => Blue
[doors] => C
[cylinders] => 8
[radio] => CD
[odometer] => 89887
[odometer_difference] => 6887
[odometer_difference_abs] => 6887
[price] => 15100
)
答案 0 :(得分:1)
您知道可以将数组与==
进行比较吗?
<?php
$a = array( 'a' => 'alpha', 'b' => 'bravo' );
$b = array( 'a' => 'alpha', 'b' => 'bravo' );
$c = array( 'a' => 'alpha', 'c' => 'charlie' );
$d = array( 'c' => 'charlie', 'a' => 'alpha' );
var_dump(
$a == $b, // true
$a === $b, // true
$a != $c, // true (different keys/values)
$c == $d, // true
$c !== $d // true (no identity! - different order of keys)
);
考虑到这一点,
应该很简单你也可以
答案 1 :(得分:0)
我不打算在这里编写整个解决方案,因为你还没有开始使用任何代码,但这是我将如何开始:
我建议为简单数组function compare_arr(arr1, arr2, ignore_keys) { ... }
编写一个比较函数,您可以在多维数组的更具体的比较函数中为每个子数组调用它。
循环键值对(foreach?)并检查当前键是否在数组ignore_keys
中,然后您可以忽略此元素,否则您可以将值标记为重复。
如果值不匹配,您可以中止此比较。
我认为数组滤波器功能在这里没有任何帮助。