[英]How to count multiple array values as per key in PHP?
I want count of email and comment_id as per id, like for id=>2 email_count=> 3, comment_count=>1.我想要根据 id 计算 email 和 comment_id,比如 id=>2 email_count=>3,comment_count=>1。 Can anyone suggest how to loop or array function in php?谁能建议如何在 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.它遍历数组并使用 email 和 comment_id 作为键。 When a key doesn't exist it is created with the default value(0)当一个键不存在时,它是用默认值(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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.