i am using $_POST
for getting all input
values and it generates an array like:
[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
i want to split:
[seen1] => 1
[flag1] => 0
[time1] => 275
[qtsnums1] => 17
and insert in 1 variable, how to do this?
Assuming your input array is named $input
, you can create your new array using this:
$output = array();
$wantedKeys = array('seen1', 'flag1', 'time1', 'qtsnums1');
foreach ($wantedKeys as $key)
{
$output[$key] = $input[$key];
}
print_r($output);
To get list containing first four keys, regardless how they are named:
$wantedKeys = array_slice(array_keys($input), 0, 4);
You can also use aforementioned array_chunk
. If you want to get away with one-liner, you can do this:
$output = current(array_chunk($input, 4, true));
Note that it generates warning about references in newer versions of PHP. In such case you can use this:
$output = array_chunk($input, 4, true)[0];
This, however, will generate syntax error on older PHPs.
array_chunk
will help you splitting the array:
$new = array_chunk($_POST, 4, true) ; //Do not forget to use TRUE to save indices
$desired_result = $new[0] ;
var_dump($desired_result) ;
Yeah array_slice() will do if you need only the first 4. But following is a general one, which splits the input array to different chunks.
$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);
Output will be as follows
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
)
)
So giving $new_array[1] will get the 1st chunk and $new_array[2] will get 2nd chunk and so on.