这是来自bio-metrics的样本数组数据 我只想收集具有相同bio_id和日期
的数据
temp:[
0:{
bio_id:"1"
date:"2017-10-05"
date_time:"2017-10-05 08:00:22"
device_name:"biometrics"
time:"08:00:22"
}
1:{
bio_id:"1"
date:"2017-10-05"
date_time:"2017-10-05 08:00:23"
device_name:"biometrics"
time:"08:00:23"
}
2:{
bio_id:"2"
date:"2017-10-05"
date_time:"2017-10-05 08:06:29"
device_name:"biometrics"
time:"08:06:29"
}
3:{
bio_id:"1"
date:"2017-10-05"
date_time:"2017-10-05 15:06:47"
device_name:"biometrics"
time:"15:06:47"
}
4:{
bio_id:"2"
date:"2017-10-05"
date_time:"2017-10-05 16:01:50"
device_name:"biometrics"
time:"16:01:50"
}
]
我一直坚持使用我制作的代码,并且不知道我应该如何操作它,或者我将如何正确存储它,我尝试了一些数组函数,但它给我的数据提供了不同的结果
$len = count($temp);
for ($i=0; $i <$len ; $i++) {
$id = $temp[$i]['bio_id'];
$date = $temp[$i]['date'];
for ($x=0; $x < $len; $x++) {
if ($id == $temp[$x]['bio_id'] && $date == $temp[$x]['date']) {
$data[] = $temp[$x];
$int[] = $x;
}
}
}
我不知道应该如何操作它,或者我将如何正确存储它,我尝试了一些数组函数,但它给我的数据提供了不同的结果
答案 0 :(得分:1)
此代码将根据id和date
收集数组中的副本$newTemp = array();
foreach($temp as $value){
$newTemp[$value['id'].'_'.$value['date']][] = $value;
}
答案 1 :(得分:0)
我只是想收集具有相同
的数据bio_id
和date
最简单的方法是迭代输入数组并将数据聚合到一个新数组中,并使用bio_id
和date
字段生成的密钥编制索引。这样,可以轻松识别重复条目,因为密钥已经存在于输出数组中。
$input = array(/* the big input array here */);
// Build the output here
$output = array();
foreach ($input as $item) {
$key = $item['bio_id'].':'.$item['date'];
if (array_key_exists($key, $output)) {
// This is a duplicate
// Ignore the data, update only the count
$output[$key]['count'] ++;
} else {
// This is the first time this combination is processed
// Copy the input
$output[$key] = $item;
// Keep in 'count' how many times this combination exists in the input
$output[$key]['count'] = 1;
}
}
$output
的每个条目都是$input
的第一个条目,具有bio_id
和date
的相同组合。另外,count
的值是分享$input
和bio_id
对的date
条目数。
如果您需要以不同的方式聚合数据,请使用此示例(保留所有重复数据,而不是数字,等等。)
另一个保留重复项的示例:
// Build the output here
$output = array();
foreach ($input as $item) {
$key = $item['bio_id'].':'.$item['date'];
if (array_key_exists($key, $output)) {
// This is a duplicate; add it to the list
$output[$key]['all'][] = $item;
} else {
// This is the first time this combination is processed
// Copy important values (bio_id and date) from the input
$output[$key] = array(
'bio_id' => $item['bio_id'],
'date' => $item['date'],
// Store the entire $item into a list
'all' => array($item),
);
}
}
了解PHP arrays如何使用square brackets syntax以及如何create or modify their values访问其元素。
答案 2 :(得分:0)
$newTemp = array();
for($temp as $value){
$key = $value->id." ".$value->date;
if(isset($newTemp[$key])){
$newTemp[$key] = array_merge($newTemp[$key],$value);
}else{
$newTemp[$key] = $value;
}
}