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] =>
)
)
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)
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.