2014-10-02 132 views
0

我希望用大洲,国家和地区填充数组。其结果将看起来像:PHP - 填充多维数组

$arr_continent = array( 
    '7' => array (
    'name' => 'Africa', 
    'countries' => array (
     'CG' => array(
     'name' => 'Congo', 
     'areas' => array('a', 'b', 'c')), 
     'ZF' => array(
     'name' => 'South Africa') 
     'areas' => array('a', 'b', 'c')), 
    ) 
), 
    '2' => array (
    'name' => 'North Amercia', 
    'countries' => array (
     'US' => array(
... 

通过国家循环我用填充阵列(或至少我想):

foreach ($countries as $country) { 
    $arr_continent[$country->continent_id] = array(
    'name' => $country->name, 
    'countries' => array()); 

    $arr_continents[$country->continent_id]['countries'][$country->id] = array(
    'name' => $country->name, 
    ...); 
} 

但我不能使它发挥作用。我也尝试测试continent_id键是否已经不在数组中,但是这不起作用if (! array_key_exists($country->continent_id, $arr_continent)) {

任何人都可以指出我正确的方向吗?

谢谢

+0

正确的方向:http://php.net/manual/en/language.types.array.php! %)P – loveNoHate 2014-10-02 09:02:27

+0

您的示例似乎将国家/地区ID设置为2个字母,但在您使用$ country-> id的代码中,是数字还是2个字母? – max4ever 2014-10-02 09:02:28

+0

您需要帮助创建所需格式的数组,但您不提供输入数据格式。所以我不能帮你。 – Kleskowy 2014-10-02 09:05:29

回答

0

应该是很简单的

foreach ($countries as $country) { 

    // init a new continent 
    if (!isset($arr_continent[$country->continent_id])) { 
     $arr_continent[$country->continent_id] = array(
      'name' => $country->continent_name, 
      'countries' => array() 
     ); 
    } 

    // adding the country 
    $arr_continent[$country->continent_id]['countries'][$country->id] = array(
     'name' => $country->name 
     'areas' => ... 
    ); 

} 

首先你初始化一个新的大陆如果需要的话。您设置名称并创建一个空的国家/地区数组。然后你将国家添加到这个数组中。

+0

它的工作原理,我错过了'isset'方法,谢谢DerVO – SynRJ 2014-10-02 09:13:15