计算嵌套数组元键的值
Count values of nested array metakey
我想计算某个元值在某个页面 (id) 中出现了多少次。
我已经得到了这样的元值:
function aantal_reviews_ophalen() {
$get_page_ID = get_queried_object_id();
$get_review_count = get_post_meta( $get_page_ID, $key = 'rwp_rating_0' , $single = false);
return array_count_values($get_review_count)['343'];
}
343 在这种情况下是字段的值 rating_post_id 但不起作用。
我尝试了很多方法,但似乎没有任何效果。
我也用这个例子试过:
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
return $counts['Ben'];
工作得很好,但这是因为这个数组与我从 $get_review_count.
得到的数组不同
当我 print_r($get_review_count);
结果是:
Array ( [0] => Array ( [rating_id] => rwp_rating_5b4da83f6b281 [rating_post_id] => 343 [rating_review_id] => 0 [rating_score] => Array ( [0] => 2 [1] => 2 [2] => 3.5 ) [rating_user_id] => 0 [rating_user_name] => Joep van Dongen [rating_user_email] => testmail@gmail.com [rating_title] => Dit is een test beoordeling [rating_comment] => Dit is een test beoordeling [rating_images] => Array ( ) [rating_date] => 1531815999 [rating_status] => published [rating_verified] => [rating_template] => rwp_template_5b16a33aa16b7 [rating_privacy] => Array ( ) ) [1] => Array ( [rating_id] => rwp_rating_5bd0271605392 [rating_post_id] => 343 [rating_review_id] => 0 [rating_score] => Array ( [0] => 5 [1] => 5 [2] => 5 ) [rating_user_id] => 4 [rating_user_name] => [rating_user_email] => [rating_title] => Harry de Vries [rating_comment] => Dit is een testreview om te kijken of et werkrty [rating_images] => Array ( ) [rating_date] => 1540368150 [rating_status] => published [rating_verified] => [rating_template] => rwp_template_5b16a33aa16b7 [rating_privacy] => Array ( [t5bab7c0abed1f] => true ) ) )
这看起来像一个嵌套数组,但老实说,我不知道如何检索我想要的数据。
我如何计算值 343 的 [rating_post_id] 在这个数组中有多少次并且 return 值?
编辑
好的,我现在用这个:
echo var_export($get_review_count, true);
这是我得到的结果:
array ( 0 => array ( 'rating_id' => 'rwp_rating_5b4da83f6b281', 'rating_post_id' => 343, 'rating_review_id' => '0', 'rating_score' => array ( 0 => 2.0, 1 => 2.0, 2 => 3.5, ), 'rating_user_id' => 0, 'rating_user_name' => 'Joep van Dongen', 'rating_user_email' => 'dongen.van.joep@gmail.com', 'rating_title' => 'Dit is een test beoordeling', 'rating_comment' => 'Dit is een test beoordeling', 'rating_images' => array ( ), 'rating_date' => 1531815999, 'rating_status' => 'published', 'rating_verified' => false, 'rating_template' => 'rwp_template_5b16a33aa16b7', 'rating_privacy' => array ( ), ), 1 => array ( 'rating_id' => 'rwp_rating_5bd0271605392', 'rating_post_id' => 343, 'rating_review_id' => '0', 'rating_score' => array ( 0 => 5.0, 1 => 5.0, 2 => 5.0, ), 'rating_user_id' => 4, 'rating_user_name' => '', 'rating_user_email' => '', 'rating_title' => 'Harry de Vries', 'rating_comment' => 'Dit is een testreview om te kijken of et werkrty', 'rating_images' => array ( ), 'rating_date' => 1540368150, 'rating_status' => 'published', 'rating_verified' => false, 'rating_template' => 'rwp_template_5b16a33aa16b7', 'rating_privacy' => array ( 't5bab7c0abed1f' => 'true', ), ), )
考虑你有这样的 $get_review_count
数组:
$get_review_count = [
[
'rating_id' => 'rwp_rating_5b4da83f6b281',
'rating_post_id' => 343 ,
'rating_review_id' => 0 ,
'rating_score' => [
'0' => 2 ,
'1' => 2 ,
'2' => 3.5 ],
'rating_user_id' => 0 ,
'rating_user_name' => 'Joep van Dongen ',
'rating_user_email' => 'testmail@gmail.com ',
'rating_title' => 'Dit is een test beoordeling ',
'rating_comment' => 'Dit is een test beoordeling ',
'rating_images' => [],
'rating_date' => 1531815999 ,
'rating_status' => 'published ',
'rating_verified' => '',
'rating_template' => 'rwp_template_5b16a33aa16b7 ',
'rating_privacy' => []
],
[
'rating_id' => 'rwp_rating_5b4da83f6b281',
'rating_post_id' => 343 ,
'rating_review_id' => 0 ,
'rating_score' => [
'0' => 2 ,
'1' => 2 ,
'2' => 3.5 ],
'rating_user_id' => 0 ,
'rating_user_name' => 'Joep van Dongen ',
'rating_user_email' => 'testmail@gmail.com ',
'rating_title' => 'Dit is een test beoordeling ',
'rating_comment' => 'Dit is een test beoordeling ',
'rating_images' => [],
'rating_date' => 1531815999 ,
'rating_status' => 'published ',
'rating_verified' => '',
'rating_template' => 'rwp_template_5b16a33aa16b7 ',
'rating_privacy' => []
],
];
因为它是多维数组,您可以使用 array_column
仅限制 'rating_post_id'
列,然后再执行 array_count_values
:
echo array_count_values(array_column($get_review_count, 'rating_post_id'))['343'];
如果将 array_column 与 array_intersect 结合使用,您将隔离 ID 为 343 的完整数组。
$new = array_intersect_key($arr,array_intersect(array_column($arr, 'rating_post_id'), [343]));
var_dump($new);
echo count($new); //2
我想计算某个元值在某个页面 (id) 中出现了多少次。 我已经得到了这样的元值:
function aantal_reviews_ophalen() {
$get_page_ID = get_queried_object_id();
$get_review_count = get_post_meta( $get_page_ID, $key = 'rwp_rating_0' , $single = false);
return array_count_values($get_review_count)['343'];
}
343 在这种情况下是字段的值 rating_post_id 但不起作用。
我尝试了很多方法,但似乎没有任何效果。
我也用这个例子试过:
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
return $counts['Ben'];
工作得很好,但这是因为这个数组与我从 $get_review_count.
得到的数组不同当我 print_r($get_review_count);
结果是:
Array ( [0] => Array ( [rating_id] => rwp_rating_5b4da83f6b281 [rating_post_id] => 343 [rating_review_id] => 0 [rating_score] => Array ( [0] => 2 [1] => 2 [2] => 3.5 ) [rating_user_id] => 0 [rating_user_name] => Joep van Dongen [rating_user_email] => testmail@gmail.com [rating_title] => Dit is een test beoordeling [rating_comment] => Dit is een test beoordeling [rating_images] => Array ( ) [rating_date] => 1531815999 [rating_status] => published [rating_verified] => [rating_template] => rwp_template_5b16a33aa16b7 [rating_privacy] => Array ( ) ) [1] => Array ( [rating_id] => rwp_rating_5bd0271605392 [rating_post_id] => 343 [rating_review_id] => 0 [rating_score] => Array ( [0] => 5 [1] => 5 [2] => 5 ) [rating_user_id] => 4 [rating_user_name] => [rating_user_email] => [rating_title] => Harry de Vries [rating_comment] => Dit is een testreview om te kijken of et werkrty [rating_images] => Array ( ) [rating_date] => 1540368150 [rating_status] => published [rating_verified] => [rating_template] => rwp_template_5b16a33aa16b7 [rating_privacy] => Array ( [t5bab7c0abed1f] => true ) ) )
这看起来像一个嵌套数组,但老实说,我不知道如何检索我想要的数据。
我如何计算值 343 的 [rating_post_id] 在这个数组中有多少次并且 return 值?
编辑 好的,我现在用这个:
echo var_export($get_review_count, true);
这是我得到的结果:
array ( 0 => array ( 'rating_id' => 'rwp_rating_5b4da83f6b281', 'rating_post_id' => 343, 'rating_review_id' => '0', 'rating_score' => array ( 0 => 2.0, 1 => 2.0, 2 => 3.5, ), 'rating_user_id' => 0, 'rating_user_name' => 'Joep van Dongen', 'rating_user_email' => 'dongen.van.joep@gmail.com', 'rating_title' => 'Dit is een test beoordeling', 'rating_comment' => 'Dit is een test beoordeling', 'rating_images' => array ( ), 'rating_date' => 1531815999, 'rating_status' => 'published', 'rating_verified' => false, 'rating_template' => 'rwp_template_5b16a33aa16b7', 'rating_privacy' => array ( ), ), 1 => array ( 'rating_id' => 'rwp_rating_5bd0271605392', 'rating_post_id' => 343, 'rating_review_id' => '0', 'rating_score' => array ( 0 => 5.0, 1 => 5.0, 2 => 5.0, ), 'rating_user_id' => 4, 'rating_user_name' => '', 'rating_user_email' => '', 'rating_title' => 'Harry de Vries', 'rating_comment' => 'Dit is een testreview om te kijken of et werkrty', 'rating_images' => array ( ), 'rating_date' => 1540368150, 'rating_status' => 'published', 'rating_verified' => false, 'rating_template' => 'rwp_template_5b16a33aa16b7', 'rating_privacy' => array ( 't5bab7c0abed1f' => 'true', ), ), )
考虑你有这样的 $get_review_count
数组:
$get_review_count = [
[
'rating_id' => 'rwp_rating_5b4da83f6b281',
'rating_post_id' => 343 ,
'rating_review_id' => 0 ,
'rating_score' => [
'0' => 2 ,
'1' => 2 ,
'2' => 3.5 ],
'rating_user_id' => 0 ,
'rating_user_name' => 'Joep van Dongen ',
'rating_user_email' => 'testmail@gmail.com ',
'rating_title' => 'Dit is een test beoordeling ',
'rating_comment' => 'Dit is een test beoordeling ',
'rating_images' => [],
'rating_date' => 1531815999 ,
'rating_status' => 'published ',
'rating_verified' => '',
'rating_template' => 'rwp_template_5b16a33aa16b7 ',
'rating_privacy' => []
],
[
'rating_id' => 'rwp_rating_5b4da83f6b281',
'rating_post_id' => 343 ,
'rating_review_id' => 0 ,
'rating_score' => [
'0' => 2 ,
'1' => 2 ,
'2' => 3.5 ],
'rating_user_id' => 0 ,
'rating_user_name' => 'Joep van Dongen ',
'rating_user_email' => 'testmail@gmail.com ',
'rating_title' => 'Dit is een test beoordeling ',
'rating_comment' => 'Dit is een test beoordeling ',
'rating_images' => [],
'rating_date' => 1531815999 ,
'rating_status' => 'published ',
'rating_verified' => '',
'rating_template' => 'rwp_template_5b16a33aa16b7 ',
'rating_privacy' => []
],
];
因为它是多维数组,您可以使用 array_column
仅限制 'rating_post_id'
列,然后再执行 array_count_values
:
echo array_count_values(array_column($get_review_count, 'rating_post_id'))['343'];
如果将 array_column 与 array_intersect 结合使用,您将隔离 ID 为 343 的完整数组。
$new = array_intersect_key($arr,array_intersect(array_column($arr, 'rating_post_id'), [343]));
var_dump($new);
echo count($new); //2