我需要生成一个没有预定义键的数组。
我有这个数组:
regions = [
{
"id":1,
"name":"Alaska",
"continent_id":5,
"owner_id":3,
....
},
{
"id":2,
"name":"Greenland",
"continent_id":5,
"owner_id":7,
....
}
我想生成
$summary = [];
for ($i = 0; $i < count($owners); $i++) {
for ($j = 0; $j < count($regions); $j++) {
if ($owners[$i]['id'] == $regions[$j]['owner_id']) {
$summary[ $regions[$j]['continent_id'] ]++; <-- NEED HELP HERE
}
}
}
所以我最终得到$summary
包含&#34;键&#34;对于用户拥有区域的每个大陆,以及每个大陆的区域。
以上内容无效,因为它返回undefined index
。如何动态生成数组键并保持计数?
我的预期输出是:
$summary = ['1' => 12, '3' => 5, '5' => 7];
$summary[1] = 12;
$summary[3] = 5;
$summary[5] = 7;
答案 0 :(得分:0)
当您第一次遇到'continent_id'的特定值时 - 或者实际上是先前未遇到的任何数组元素时,最好先执行isset
然后根据需要创建它。
if ($owners[$i]['id'] == $regions[$j]['owner_id']) {
if ( isset($summary[ $regions[$j]['continent_id'] ]) === false ) {
$summary[ $regions[$j]['continent_id'] ] = 0;
}
$summary[ $regions[$j]['continent_id'] ]++;
}