我有两个数组。数组1包含用户名和关联的ID。数组2包含相同的ID,时间戳和一些与该时间戳和该ID相关联的“关注者”。
示例,(这只是数据的一小部分):
$ accounts_list 数组
array(4) {
[0]=> array(2) {
["id"]=> string(4) "1279"
["name"]=> string(13) "Something_big"
}
}
$ followers_list 数组
array(12) {
[0]=> array(3) {
["account_id"]=> string(4) "1279"
["date_time"]=> string(19) "2014-11-14 16:24:03"
["followers"]=> string(4) "1567"
}
[2]=> array(3) {
["account_id"]=> string(4) "1279"
["date_time"]=> string(19) "2014-11-14 18:52:35"
["followers"]=> string(4) "1566"
}
[8]=> array(3) {
["account_id"]=> string(4) "1279"
["date_time"]=> string(19) "2014-11-17 12:11:59"
["followers"]=> string(4) "1557"
}
}
如您所见,$ followers_list数组存储特定ID的每个时间戳/日期的关注者。 ID与ID和名称匹配。
我想要做的是将数据组合成这样的东西:
$ new_array
array(1) {
[0]=>
array(2) {
["id"]=> string(4) "1279"
["name"]=> string(13) "Something_big"
["dates"]=>
array(3) {
["date_time"]=> string(19) "2014-11-17 12:11:59"
array(1) {
["followers"]=> string(4) "301"
}
["date_time"]=> string(19) "2014-12-17 13:10:32"
array(1) {
["followers"]=> string(4) "307"
}
["date_time"]=> string(19) "2014-12-17 15:16:45"
array(1) {
["followers"]=> string(4) "317"
}
}
}
}
希望你能看到我的意思,我希望每个日期的数组都包含关注者。这些日期应该在用户索引中。这样整个数组就可以存储每个用户的日期和关注者。
我试图弄清楚如何遍历$followers_list
数组并将其添加到$accounts_list
数组中,但我无法弄清楚如何将两个数组中的ID相互匹配。
你将如何创建这个数组?
这就是我的尝试:
$counter = 0;
foreach ($followers_data as &$follower_count){
$timestamp = $follower_count['date_time'];
$followers = $follower_count['followers'];
$time_and_followers = [$timestamp,$followers];
array_push($accounts_data[$counter],$time_and_followers);
$counter++;
}
当然这不起作用,因为$ counter数字并不总是等于第一个数组中的帐户ID的索引。
答案 0 :(得分:2)
您可以通过简单地使用帐户ID作为新数组的索引ID来实现此目的
例如。我们将声明一个名为$ new_tmp_array的临时变量;
首先,我们将使用以下代码添加帐户列表:
foreach($accounts_list as $account){
$new_tmp_array[$account['id'] ] = $account;
}
现在是时候添加$ followers_list:
foreach($followers_list as $followers){
$tmp = $followers;
unset($tmp['account_id'])
$new_tmp_array[$followers['account_id'] ] ['dates'][] = $tmp;
}
现在,对于没有帐户密钥的数组。
$new_array = array_values(new_tmp_array);
答案 1 :(得分:0)
我不确定这会是你想要的,但是试试看:
$new_array = $accounts_list;
foreach($new_array as &$account){
foreach($followers_list as $follower){
if($follower["account_id"] == $account["id"]){
$account["dates"][] = array($follower["date_time"], $follower["followers"]);
}
}
}