Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对数组中的重复键进行计数并求和_Php_Arrays_Loops - Fatal编程技术网

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);
prints
array()
如果你不知道
$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));