php动态创建数组键

时间:2017-09-24 04:09:19

标签: php arrays

我需要生成一个没有预定义键的数组。

我有这个数组:

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;

1 个答案:

答案 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'] ]++;
}