繁体   English   中英

如何根据PHP中的键计算多个数组值?

[英]How to count multiple array values as per key in PHP?

我想要根据 id 计算 email 和 comment_id,比如 id=>2 email_count=>3,comment_count=>1。 谁能建议如何在 php 中循环或数组函数?

Array
(
    [0] => Array
        (
            [id] => 2
            [email] => ronak1@xyz.in
            [comment_id] => 3
        )
[1] => Array
    (
        [id] => 2
        [email] => ronak2@xyz.in
        [comment_id] => 3
    )

[2] => Array
    (
        [id] => 2
        [email] => hitesh@xyz.in
        [comment_id] => 3
    )

[3] => Array
    (
        [id] => 3
        [email] => jayendhar@xyz.in
        [comment_id] => 1
    )

[4] => Array
    (
        [id] => 3
        [email] => jayendhar@xyz.in
        [comment_id] => 2
    )

[5] => Array
    (
        [id] => 3
        [email] => jayendhar@xyz.in
        [comment_id] => 4
    )

[6] => Array
    (
        [id] => 3
        [email] => ronak@xyz.in
        [comment_id] => 1
    )

[7] => Array
    (
        [id] => 3
        [email] => ronak@xyz.in
        [comment_id] => 2
    )

[8] => Array
    (
        [id] => 3
        [email] => ronak@xyz.in
        [comment_id] => 4
    )

[9] => Array
    (
        [id] => 6
        [email] => hitesh@xyz.in
        [comment_id] => 
    )

)

它遍历数组并使用 email 和 comment_id 作为键。 当一个键不存在时,它是用默认值(0)创建的

$comments = [
    [
        'id' => 2,
        'email' => 'ronak1@xyz.in',
        'comment_id' => 3
    ],
    [
        'id' => 2,
        'email' => 'ronak2@xyz.in',
        'comment_id' => 3
    ],
    [
        'id' => 2,
        'email' => 'hitesh@xyz.in',
        'comment_id' => 3
    ],
    [
        'id' => 3,
        'email' => 'jayendhar@xyz.in',
        'comment_id' => 1
    ],
    [
        'id' => 3,
        'email' => 'jayendhar@xyz.in',
        'comment_id' => 2
    ],
    [
        'id' => 3,
        'email' => 'jayendhar@xyz.in',
        'comment_id' => 4
    ]
    ,
    [
        'id' => 3,
        'email' => 'ronak@xyz.in',
        'comment_id' => 1
    ],
    [
        'id' => 3,
        'email' => 'ronak@xyz.in',
        'comment_id' => 2
    ],
    [
        'id' => 3,
        'email' => 'ronak@xyz.in',
        'comment_id' => 4
    ],
    [
        'id' => 6,
        'email' => 'hitesh@xyz.in',
        'comment_id' => 1
    ]

];
$emails = [];
$commentNumbers = [];

foreach ($comments as $comment) {
    $comment = (object)$comment;

    if (!array_key_exists($comment->email, $emails)) {
        $emails[$comment->email] = 0;
    }

    if (!array_key_exists($comment->comment_id, $commentNumbers)) {
        $commentNumbers[$comment->comment_id] = 0;
    }

    $emails[$comment->email] = $emails[$comment->email] + 1;
    $commentNumbers[$comment->comment_id] = $commentNumbers[$comment->comment_id] + 1;
}



var_dump($emails);
var_dump($commentNumbers);

结果:

array(5) {
  ["ronak1@xyz.in"]=>
  int(1)
  ["ronak2@xyz.in"]=>
  int(1)
  ["hitesh@xyz.in"]=>
  int(2)
  ["jayendhar@xyz.in"]=>
  int(3)
  ["ronak@xyz.in"]=>
  int(3)
}
array(4) {
  [3]=>
  int(3)
  [1]=>
  int(3)
  [2]=>
  int(2)
  [4]=>
  int(2)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM