如何在PHP中按键计算多个数组值?

时间:2016-09-28 09:10:15

标签: php

我希望根据ID计算电子邮件和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] => 
    )

)

1 个答案:

答案 0 :(得分:0)

它遍历数组并使用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)
}