0
这是我的代码应该如何工作。我从一些远程JSON URL中提取数据并将它们解码回正常的数组。然后我遍历这些数组并创建一个组合数组。循环时,我在组合数组内执行array_search查看用户名的值是否已经存在并返回键。如果返回一个密钥,那么我将该密钥的数据与循环数据结合起来。如果搜索返回false,则将循环数据添加到数组的末尾。PHP array的几个问题
有几个问题我有,他们可能有关,但我不知道。
首先,在我的代码中,当我的array_search运行时,它破坏了代码。 其次,如果我var_dump在array_search if语句之上的主数组,然后该数组填充循环的第一轮,但是当我从转储看数组的结构时,我看到该数组开始出奇怪的,我不知道为什么。
下面是代码
$master_user_array = array();
foreach($url_list AS $url) {
$json = file_get_contents($url."?key=".self::AUTH_KEY);
$data = json_decode($json, true);
$user_count = 0;
foreach($data['user'] AS $user) {echo highlight_string(var_export($master_user_array, true));
if(count($master_user_array) > 0) {
$key = array_search($user['username'], array_column($master_user_array, 'username'));
} else {
$key = false;
}
if(false !== $key) {
$master_user_array[$key]['username'] = $user['username'];
$master_user_array[$key]['email'] = $user['email'];
$master_user_array[$key]['total']['counttoday'] += $user['counttoday'];
$master_user_array[$key]['total']['countweek'] += $user['countweek'];
$master_user_array[$key]['total']['countmonth'] += $user['countmonth'];
$master_user_array[$key]['total']['countyear'] += $user['countyear'];
$master_user_array[$key]['total']['counttotal'] += $user['counttotal'];
$master_user_array[$key]['sites'][$data['siteurl']]['counttoday'] = $user['counttoday'];
$master_user_array[$key]['sites'][$data['siteurl']]['countweek'] = $user['countweek'];
$master_user_array[$key]['sites'][$data['siteurl']]['countmonth'] = $user['countmonth'];
$master_user_array[$key]['sites'][$data['siteurl']]['countyear'] = $user['countyear'];
$master_user_array[$key]['sites'][$data['siteurl']]['counttotal'] = $user['counttotal'];
} else {
$master_user_array[$user_count]['username'] = $user['username'];
$master_user_array[$user_count]['email'] = $user['email'];
$master_user_array[$user_count]['total']['counttoday'] = $user['counttoday'];
$master_user_array[$user_count]['total']['countweek'] = $user['countweek'];
$master_user_array[$user_count]['total']['countmonth'] = $user['countmonth'];
$master_user_array[$user_count]['total']['countyear'] = $user['countyear'];
$master_user_array[$user_count]['total']['counttotal'] = $user['counttotal'];
$master_user_array[$user_count]['sites'][$data['siteurl']]['counttoday'] = $user['counttoday'];
$master_user_array[$user_count]['sites'][$data['siteurl']]['countweek'] = $user['countweek'];
$master_user_array[$user_count]['sites'][$data['siteurl']]['countmonth'] = $user['countmonth'];
$master_user_array[$user_count]['sites'][$data['siteurl']]['countyear'] = $user['countyear'];
$master_user_array[$user_count]['sites'][$data['siteurl']]['counttotal'] = $user['counttotal'];
$user_count++;
}
}
}
这里是从通知的var_dump输出的阵列阵列( )1开始。如果我摆脱array_search和代码不那么这个突破数组的一部分被添加到循环的每一轮的开始。总是与1.
array (
) 1 array (
'' =>
array (
'username' => 'somename',
'email' => 'someemail',
'total' =>
array (
'counttoday' => 0,
'countweek' => 0,
'countmonth' => 0,
'countyear' => 0,
'counttotal' => 3,
),
'sites' =>
array (
'' =>
array (
'counttoday' => 0,
'countweek' => 0,
'countmonth' => 0,
'countyear' => 0,
'counttotal' => '3',
),
),
),
)