我正在处理动态数据,所以我试图将这些数据放入二维数组中。
我需要这样的结构:
$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' );
我希望你能帮助我。
感谢。
答案 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];