我正在使用$_POST
获取所有input
值,并生成如下数组:
[seen1] => 1
[flag1] => 0
[time1] => 275
[qtsnums1] => 17
[seen2] => 0
[flag2] => 0
[time2] => 0
[qtsnums2] => 11
[seen3] => 0
[flag3] => 0
[time3] => 0
[qtsnums3] => 9
[seen4] => 0
[flag4] => 0
[time4] => 0
[qtsnums4] => 5
[seen5] => 0
[flag5] => 0
[time5] => 0
[qtsnums5] => 10
我想分手:
[seen1] => 1
[flag1] => 0
[time1] => 275
[qtsnums1] => 17
并插入1个变量,怎么做?
答案 0 :(得分:3)
array_chunk
将帮助您拆分数组:
$new = array_chunk($_POST, 4, true) ; //Do not forget to use TRUE to save indices
$desired_result = $new[0] ;
var_dump($desired_result) ;
答案 1 :(得分:2)
假设您的输入数组名为$input
,您可以使用以下命令创建新数组:
$output = array();
$wantedKeys = array('seen1', 'flag1', 'time1', 'qtsnums1');
foreach ($wantedKeys as $key)
{
$output[$key] = $input[$key];
}
print_r($output);
获取包含前四个键的列表,无论它们如何命名:
$wantedKeys = array_slice(array_keys($input), 0, 4);
您也可以使用上述array_chunk
。如果你想逃离单行,你可以这样做:
$output = current(array_chunk($input, 4, true));
请注意,它会在较新版本的PHP中生成有关引用的警告。在这种情况下,您可以使用:
$output = array_chunk($input, 4, true)[0];
然而,这会在较旧的PHP上产生语法错误。
答案 2 :(得分:1)
如果你只需要第一个4,那么array_slice()会这样做。但是下面是一个通用的,它将输入数组分成不同的块。
$array = array(
'seen1' => 1,
'flag1' => 0,
'time1' => 3,
'qtsnums1' => 4,
'seen2' => 1,
'flag2' => 0,
'time2' => 3,
'qtsnums2' => 4,
'seen3' => 1,
'flag3' => 0,
'time3' => 3,
'qtsnums3' => 4,
);
$new_array = array();
foreach($array as $key => $value){
preg_match('/([^0-9]+)(\d+)/', $key, $matches);
$new_array[$matches[2]][$matches[1]] = $value;
}
print_r($new_array);
输出如下
Array
(
[1] => Array
(
[seen] => 1
[flag] => 0
[time] => 3
[qtsnums] => 4
)
[2] => Array
(
[seen] => 1
[flag] => 0
[time] => 3
[qtsnums] => 4
)
[3] => Array
(
[seen] => 1
[flag] => 0
[time] => 3
[qtsnums] => 4
)
)
因此,给$ new_array [1]将得到第一个块,$ new_array [2]将获得第二个块,依此类推。