动态生成二维数组

时间:2014-03-13 20:58:43

标签: php arrays dynamically-generated

我正在处理动态数据,所以我试图将这些数据放入二维数组中。

我需要这样的结构:

$array['something1'] = array ( 'hi1' => 'there1' , 'hi2' => 'there2' );

所有这些数据都是由foreach动态生成的,例如:

$list = array ( 0 => 'something;hi1;there1' , 1 => 'something;hi2;there2' );


foreach ( $list as $key => $data )
{
    // extract data
    $columns    = explode ( ';' , $data );

    // set data
    $items[$columns[0]] = array ( $columns[1] => $columns[2] );
}

我如何进行上述描述?

现在,脚本正在逐步完成上一个键:

$array['something1'] = array ( 'hi2' => 'there2' );

我希望你能帮助我。

感谢。

3 个答案:

答案 0 :(得分:1)

Here is how it can be done:


$list = array ( 0 => 'something;hi1;there1' , 1 => 'something;hi2;there2' );

$newlist =array();
foreach($list as $k=>$v){

    $items = explode(';',$v);
    $newlist[$items[0]][$items[1]]=$items[2];
}


echo "<pre>";
print_r($newlist);
echo "</pre>";


//output
/*
Array
(
    [something] => Array
        (
            [hi1] => there1
            [hi2] => there2
        )

)*/

?>

答案 1 :(得分:1)

问题是,当密钥已存在时,您将覆盖该密钥的值。你应该修改为:

foreach ( $list as $key => $data )
{
    // extract data
    $columns    = explode ( ';' , $data );
    $outer_array_key = $columns[0];
    $key = $columns[1];
    $value = $columns[2];

    // set data
    $items[$outer_array_key][$key] = $value;
}

答案 2 :(得分:0)

使用以下内容更改您的设置数据:

if(!array_key_exists($columns[0], $items))
    $items[$columns[0]] = array();
$items[$columns[0]][$columns[1]] = $columns[2];