名为PHP的嵌套数组

时间:2012-12-14 16:07:57

标签: php arrays nested

我正在找人来解决这个问题。 所以我想将数组添加到数组中,但名称如下所示:

array( 
   'names' = > array( 'firstname' => 'jean' )
);

并且第二次我希望附加另一个这样的项目:

array( 
   'names' = > array( 'firstname' => 'jean'),
               array(  'age' = > '23')        

);

等等

array( 
   'names' = > array( 'firstname' => 'jean'),
               array(  'age' = > '23'),
               array(  'job' = > 'programmer')


);

提前谢谢。

3 个答案:

答案 0 :(得分:1)

$a = array('names'=>array());
$a['names'][] = array( 'firstname' => 'jean');
$a['names'][] = array(  'age' = > '23');
$a['names'][] = array(  'job' = > 'programmer');

或者您可以使用array_push http://php.net/manual/en/function.array-push.php

$a = array('names'=>array());
array_push($a['names'], array( 'firstname' => 'jean'));
array_push($a['names'], array(  'age' = > '23');
...

对于@deceze评论,正确的结构将是:

array(
    array('firstname' => '', 'age' => 100, 'job' => ''),
    array('firstname' => '', 'age' => 100, 'job' => ''),
    array('firstname' => '', 'age' => 100, 'job' => '')
)

你可以把它作为一个子阵列放在你的结构中。

答案 1 :(得分:1)

$arr['names'] = array();
$arr['names'][] = array('firstname' => 'jean');
$arr['names'][] = array('age' => '23');
$arr['names'][] = array('job' => 'programmer');

答案 2 :(得分:0)

我很抱歉,但我不得不反对这里的流程。对我而言,如果您的阵列看起来像这样,真的真的会更有意义:

array('names' => array('jean' => array('age' => '23',
                                       'job' => 'programmer')));

要实现这一点,那么,如果你想动态构建这种类型的数组:

$main = array('names' => array());
//get data from db or something
$main['names'][$data['firstname']] = array('age' => $data['age'],
                                           'job' => $data['job']);

更有意义。列出所有名称:array_keys($main['names']);可以解决问题,因此数组键仍然表示它携带的实际数据。
获取属于某个人的所有数据:

$allNames = array_keys($main['names']);
echo $allNames[0].' is a '.$main['names'][$allNames[0]]['age'].' year old '.$main['names'][$allNames[0]]['job'].'<br/>';

在这种情况下,输出将是“Jean是一名23岁的程序员”再次这可能不是您问题的直接答案,但这可能对您有用在计算出age未来属于jobname的内容时遇到了麻烦。当然,对象是避免这种情况的另一种方法