Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert complex numerical array to associative array

I have an array data that look like this :

Array (
    [0] => Array (
        [0] => Name:
        [1] => John W.
        [2] => Registration ID:
        [3] => 36
    ) 
    [1] => Array (
        [0] =>Age:
        [1] => 35
        [2] => Height:
        [3] => 5'11"
    ) 
    [3] => Array (
        [0] => Sex:
        [1] => M
        [2] => Weight:
        [3] => 200lbs
    )
    [4] => Array (
        [0] => Address
    )
    [5] => Array (
        [0] => 6824 crestwood dr delphi, IN 46923
    ))

And I want to convert it to associative array like this :

Array(
    ['Name']=> John W.
    ['Registration ID']=> 36
    ['Age']=> 35
    ['Height'] => 5'11''
    ['Sex']=>M
    ['Weight']=>200lbs
    ['Address']=>6824 crestwood dr delphi, IN 46923
)

I have no idea at all how to do this, since the supposed to be array column header were also in sequence, so it makes difficult to convert this array.

Any help I appreciate, thx.

like image 369
teakay Avatar asked May 02 '26 04:05

teakay


1 Answers

Given your origin array is called $origin , you can do it like this:

$merged = array();
foreach($origin as $val) {
   $merged = array_merge($merged, $val);
}
$tot = count($merged) - 1;
for ($i=0;$i<$tot;$i+=2) {
   $result[$merged[$i]] = $merged[$i+1];
}

var_dump($result); // To test the resulting array

Firstly, I use array_merge() to flatten the $origin array to only one dimension/depth, so we later iterate it (stepping each 2 items per iteration) and assigning each pair of items ($i and $i+1) to the resulting array.

like image 79
Nelson Avatar answered May 04 '26 19:05

Nelson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!