我试图弄清楚如何从以下数据结构中获取数据。我设法将一个平面数组分组为以下数组,但发现很难找到合适的资源来解释如何获取数据。我正在寻找每个组中项目的数量。然后我想从内部数组中打印ids ...
nodejs
答案 0 :(得分:0)
$my_array1 = array(
'grinds' =>
array(
0 =>
array(
'id' => 16562,
'slug' => 'grinds',
),
1 =>
array(
'id' => 16561,
'slug' => 'grinds',
),
),
'online-grinds' =>
array(
0 =>
array(
'id' => 16566,
'slug' => 'online-grinds',
),
),
);
获取计数:
$counts = array();
foreach ($my_array1 as $key => $val) {
$counts[$key] = count($val);
}
var_dump($counts);
产量:
array(2) {
["grinds"]=>
int(2)
["online-grinds"]=>
int(1)
}
获取内部ID:
$innerids = array();
foreach ($my_array1 as $key => $val) {
foreach ($val as $key2 => $val2) {
$innerids[] = $val2['id'];
}
}
var_dump($innerids);
产量:
array(3) {
[0]=>
int(16562)
[1]=>
int(16561)
[2]=>
int(16566)
}
答案 1 :(得分:0)
您可以使用array_map,然后对每个项目使用array_column并指定字段名称,然后使用array_count_values来计算唯一值。
然后将它们组合到一个数组中,并再次使用现有键作为新数组的键。
$arrays = array_map(function($x) {
return [
array_count_values(array_column($x, 'id')),
array_count_values(array_column($x, 'slug'))
];
}, $arrays);
print_r($arrays);
结果
Array
(
[grinds] => Array
(
[0] => Array
(
[16562] => 1
[16561] => 1
)
[1] => Array
(
[grinds] => 2
)
)
[online-grinds] => Array
(
[0] => Array
(
[16566] => 1
)
[1] => Array
(
[online-grinds] => 1
)
)
)