Mac*_*Mac 3 php arrays multidimensional-array
我有一个多维数组,我需要按唯一性排序,因为我有重复的记录,所以我需要array_unique通过数组并删除值的重复项,例如
Array
(
[0] => Array
(
[id] => 324
[time_start] => 1301612580
[level] => 0.002
[input_level] => 0.002
)
[1] => Array
(
[id] => 325
[time_start] => 1301612580
[level] => 0.002
[input_level] => 0.002
)
[2] => Array
(
[id] => 326
[time_start] => 1301612580
[level] => 0.002
[input_level] => 0.002
)
)
Run Code Online (Sandbox Code Playgroud)
有重复的time_start,他们都是一样的,也level和input_level但他们没有受到影响,只是如果有匹配time_start它应该删除它,全阵列式处理(数组比你想象的大,但我只贴小数组的例子).应该删除欺骗并返回如下:
Array
(
[0] => Array
(
[id] => 324
[time_start] => 1301612580
[level] => 0.002
[input_level] => 0.002
)
)
Run Code Online (Sandbox Code Playgroud)
我发现的问题不起作用:
$input = array( /* your data */ );
$temp = array();
$keys = array();
foreach ( $input as $key => $data ) {
unset($data['id']);
if ( !in_array($data, $temp) ) {
$temp[] = $data;
$keys[$key] = true;
}
}
$output = array_intersect_key($input, $keys);
Run Code Online (Sandbox Code Playgroud)
要么
$input = array( /* your data */ );
$temp = $input;
foreach ( $temp as &$data ) {
unset($data['id']);
}
$output = array_intersect_key($input, array_unique($temp));
Run Code Online (Sandbox Code Playgroud)
$temp = array();
array_filter($yourArray, function ($v) use (&$temp) {
if (in_array($v['time_start'], $temp)) {
return false;
} else {
array_push($temp, $v['time_start']);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
使用array_filter()将根据回调的结果过滤数组(我使用了自PHP 5.3以来可以使用的匿名函数).这些time_start值被收集到一个临时数组中.