-6

I want count of email and comment_id as per id, like for id=>2 email_count=> 3, comment_count=>1. Can anyone suggest how to loop or array function in 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] => 
    )

)
Alive to die - Anant
  • 70,531
  • 10
  • 51
  • 98

1 Answers1

0

It loops through the array and uses the email and comment_id as key. When a key doesn't exist it is created with the default value(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);

result:

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)
}
MaartenDev
  • 5,631
  • 5
  • 21
  • 33