Php 对数组中的重复键进行计数并求和
我试图循环浏览一个确定的论坛线程的所有页面,并获得每个用户的帖子总数,但我很难理解每次在数组中重复用户名时如何求和 这是我的密码:Php 对数组中的重复键进行计数并求和,php,arrays,loops,Php,Arrays,Loops,我试图循环浏览一个确定的论坛线程的所有页面,并获得每个用户的帖子总数,但我很难理解每次在数组中重复用户名时如何求和 这是我的密码: for ($x = 1; $x <= 5; $x++) { $ch = curl_init('http://myforum.com/thread-123?&page=' . $x); curl_setopt_array($ch, array( CURLOPT_HEADER => TRUE, CU
for ($x = 1; $x <= 5; $x++) {
$ch = curl_init('http://myforum.com/thread-123?&page=' . $x);
curl_setopt_array($ch, array(
CURLOPT_HEADER => TRUE,
CURLOPT_RETURNTRANSFER => TRUE
));
$response = curl_exec($ch);
preg_match_all('/me\">[\s]+<a href=\"([^\"]+)\">([^<]+)/i', $response, $users);
preg_match_all('/image_avatar\" src=\"([^\"]+)"/i', $response, $avatar);
$q = count($users[1]);
for ($i = 0; $i < $q; $i++) {
///////count how many times the user was inside the array///////
//$totalPosts = ?
///////count how many times the user was inside the array///////
print '-----<br /><img src="'.$avatar[1][$i].'" /><br />User: ' . $users[2][$i] . '<br />Total Posts: ' . $totalPosts . '-----<br />';
}
}
对于数组中项目的计数频率,可以使用函数 作为示例提供的阵列的代码:
Array ( [user found 1] => 4 [user found 2] => 2 [user found 3] => 1 )
结果是:
$all_users = array();
for ($x = 1; $x <= 5; $x++) {
// ....
preg_match_all('/me\">[\s]+<a href=\"([^\"]+)\">([^<]+)/i', $response, $users);
$all_users = array_merge($all_users, $users[1]);
}
print_r(array_count_values($all_users));
更新
好的,如果您有不同的页面,请尝试以下操作:
$all_users=array();
对于($x=1;$x如果您也添加一些示例,$responce
,这会有所帮助。抱歉,您必须添加更多详细信息:不清楚您使用的是什么数组,它们有什么结构,以及用户名在其中的位置。这是用于多个页面的吗?还是只是一个论坛线程?如果您想获得整个论坛的总数您可能希望在数据库上有一个计数器,否则这里有一个链接可以帮助您。我将尝试制作一个示例。数组结构如下:$users=array('user found 1','user found 2','user found 3','user found 1','user found 2','user found 1','user found 1';
您可以看到“user found 1”张贴超过2次等,我想打印一些像用户名和时间posted@Chitowns24我没有访问数据库的权限。是的,它不止一个页面,循环转到第1页,将所有找到的用户名添加到数组中,然后是第2页,同样的事情,等等。但是我不知道$users数组的值,每个页面循环都经过h作为不同的用户顺序和种类。print\r(数组计数值($users);
printsarray()
如果你不知道$users
数组的值,那么你要计算什么?看,循环经过的每个页面都有相同的布局,但每次都有不同的用户名,我想打印所有用户名以及它们在$users
数组中重复了多少次我发誓在看到你的ans之前我找到了一个解决方案wer(:。无论如何,我做了一些类似于您所做的事情,但我没有使用array\u merge,而是在我的中为($I=0;$I<$q;$I++)使用了array\u push
并添加了一些格式化内容,在这种情况下,array\u merge over push有什么好处吗?好的,我将很快用您的解决方案和我所做的格式化内容更新我的OP。非常感谢!
$users = array('user found 1', 'user found 2', 'user found 3', 'user found 1', 'user found 2', 'user found 1', 'user found 1');
print_r(array_count_values($users));
Array ( [user found 1] => 4 [user found 2] => 2 [user found 3] => 1 )
$all_users = array();
for ($x = 1; $x <= 5; $x++) {
// ....
preg_match_all('/me\">[\s]+<a href=\"([^\"]+)\">([^<]+)/i', $response, $users);
$all_users = array_merge($all_users, $users[1]);
}
print_r(array_count_values($all_users));