从会话中的特定变量创建嵌套数组

时间:2013-11-28 19:37:51

标签: php arrays

我有几个值存储在$ _SESSION中,以'first_name_'开头'last_name_'然后在末尾附加一个数字,加深生成的名称数。

我能够从会话中提取这些值中的每一个并添加到数组中,但是希望在嵌套数组中将名字和姓氏配对在一起。 (如果这是有道理的)

目前我有:

$users_array = array();

foreach ($_SESSION as $key => $value) {
    if(strpos($key, 'first_name_') === 0) {
        $users_array[] = $value;            
}
    if(strpos($key, 'last_name_') === 0) {
        $users_array[] = $value;
    }
}

这会产生一个带有var_dump:

的输出
array
0 => string 'John' (length=4)
1 => string 'Smith' (length=8)
2 => string 'Jane' (length=4)
3 => string 'Doe' (length=3)

但我想要的是:

array
'user' => 
    array
    'first_name' => string 'John' (length=4)
    'last_name' => string 'Smith' (length=5)
    array
    'first_name' => string 'Jane' (length=4)
    'last_name' => string 'Doe' (length=5)

关于如何实现这一目标的任何建议?

1 个答案:

答案 0 :(得分:1)

deceze在他的评论中是正确的...但是,从一维数组创建二维数组有类似问题的人,这里是一个解决方案。另请注意,PHP不保证在使用FOREACH进行迭代时顺序相同。由于这将起作用,它仍然容易出错。

$users_array = array();

foreach ($_SESSION as $key => $value) {
    if(strpos($key, 'first_name_') === 0) {
        $users_array[] = array();
        $users_array[count($users_array)-1]['first_name'] = $value;         
}
    if(strpos($key, 'last_name_') === 0) {
        $users_array[count($users_array)-1]['last_name'] = $value;
    }
}