1

My array $rawArray looks like this:

array ( 0 => array ( 'name' => 'firstname', 'value' => 'Max', ), 1 => array ( 'name' => 'lastname', 'value' => 'Smith ', ), 2 => array ( 'name' => 'age', 'value' => 12, ), 3 => array ( 'name' => 'gender', 'value' => 'male', ));

How can I convert this array in something like this?

$newArray = ['firstname' => 'Max', 'lastname' => 'Smith', 'age' => 12, 'gender' => 'male'];

So far I tried it with a foreach loop, but it didn't work:

$newArray = [];
foreach($rawArray as $key=>$value) {
   $newArray[$key] = [$value];
}
Max
  • 832
  • 1
  • 14
  • 33

2 Answers2

2

You can simply use array_column

$arr = array ( 0 => array ( 'name' => 'firstname', 'value' => 'Max', ), 1 => array ( 'name' => 'lastname', 'value' => 'Smith ', ), 2 => array ( 'name' => 'age', 'value' => 12, ), 3 => array ( 'name' => 'gender', 'value' => 'male', ));

var_dump(array_column($arr, "value", "name"));

Result:

array(4) {
  ["firstname"]=>
  string(3) "Max"
  ["lastname"]=>
  string(6) "Smith "
  ["age"]=>
  int(12)
  ["gender"]=>
  string(4) "male"
}
OIS
  • 9,833
  • 3
  • 32
  • 41
0
$newArray = array();
foreach($array as $value){
    $newArray[$value['name']] = $value['value'];
}
echo '<pre>';
print_r($newArray);

Result:

Array
(
    [firstname] => Max
    [lastname] => Smith 
    [age] => 12
    [gender] => male
)
kamal pal
  • 4,187
  • 5
  • 25
  • 40