PHP Convert Array Including Key Rename

108 Views Asked by At

I need convert this PHP array from a $_POST['tags'] output

$_POST = array('title' => 'apple','content' => 'fruit', 'tags' => array(0 => 1, 1 => 2, 2 => 11, 3 => 13));

I need this part converted

[tags] => Array ( [0] => 1 [1] => 2 [2] => 11 [3] => 13 ) )

into the following format and then push it back into $_POST['tags']

[tags] => Array ( [0] => Array ( [tag_id] => 1 ) [1] => Array ( [tag_id] => 2 ) [2] => Array ( [tag_id] => 11 ) [3] => Array ( [tag_id] => 13 )

I've tried but it doesn't work ...

$returnArray['tags'] = array();
foreach($_POST['tags'] as $t)
{
    $tags = array();
    $tags['tag_id'] = $t['tag_id'];
    array_push($returnArray['tags'], $tags);
}
unset($_POST['tags']);
$_POST['tags'] = array();
array_push($_POST['tags'] , $returnArray);

im on PHP Version 5.2.17

2

There are 2 best solutions below

4
On

Use array_map and assign the key -

$new = array_map(function($v) {
    return array('tag_id' => $v);
}, $_POST['tags']);
2
On

You almost had it

$returnArray['tags'] = array();
foreach($_POST['tags'] as $t)
{
    $tags = array();
    $tags['tag_id'] = $t;
    array_push($returnArray['tags'], $tags);
}
$_POST['tags'] = $returnArray;