2017-09-24 55 views
-1

我需要生成一個數組,其鍵未預先定義。php快速創建數組鍵

我有此數組:

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可能在每個大陸。

以上不起作用,因爲它返回undefined index。如何即時生成數組密鑰並保持計數?

我的預期輸出是:

$summary = ['1' => 12, '3' => 5, '5' => 7]; 

$summary[1] = 12; 
$summary[3] = 5; 
$summary[5] = 7; 
+1

也把你的預期產出。 – Ravi

+0

Hi @Ravi,我更新了我的q。謝謝 – TheRealPapa

+0

你在什麼基礎上獲得IDS?或爲特定的ID分配值? – Ravi

回答

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