Shihas
Shihas

Reputation: 814

Convert Multidimensional arrays as key and value in PHP

I have 2 Multidimensional arrays as follow:

Array1:

Array ( 
        [0] => Array ( 
                       [0] => 2D Design 
                       [1] => 3D Design & Modeling) 
        [1] => Array ( [0] => Android Developer 
                       [1] => Artificial Intelligence 
                       [2] => Web Developer)
       )

Array2:

Array ( 
        [0] => Array ( 
                       [0] => 5 
                       [1] => 10) 
        [1] => Array ( [0] => 2 
                       [1] => 4 
                       [2] => 6)
       )

I want to combine the above 2 arrays as key and value as below.

Array ( 
        [0] => Array ( 
                       [2D Design] => 5 
                       [3D Design & Modeling] => 10 ) 
        [1] => Array ( 
                       [Android Developer] => 2 
                       [Artificial Intelligence] => 4 
                       [Web Developer] => 6 )
      )   

Please help me to do this. Answers will be appreciated.

Upvotes: 0

Views: 669

Answers (3)

mickmackusa
mickmackusa

Reputation: 48073

Simply make mapped calls of array_combine(). So long as the same positioned rows have the same number of elements in them, everything will work perfectly.

Code: (Demo)

$keys =[
    ['2D Design', '3D Design & Modeling'],
    ['Android Developer', 'Artificial Intelligence', 'Web Developer']
];

$values = [
    [5, 10],
    [2, 4, 6]
];

var_export(
    array_map('array_combine', $keys, $values)
);

Upvotes: 0

JYoThI
JYoThI

Reputation: 12085

use array_combine() function creates an array by using the elements from one "keys" array and one "values" array.

Note: Both arrays must have equal number of elements!

First parameter array taken as key of new array and second parameter taken as value new array .

$new_array=array();

for($i=0;$i<count($arr1);$i++)
{

   $new_array[$i]=array_combine($arr1[$i],$arr2[$i]); 
}

print_r($new_array);

Output :

 Array
(
 [0] => Array
    (
        [2D Design] => 5
        [3D Design & Modeling] => 10
    )

[1] => Array
    (
        [Android Developer] => 2
        [Artificial Intelligence] => 4
        [Web Developer] => 6
    )

 )

Upvotes: 3

Rahul
Rahul

Reputation: 18577

This will work,

$arr1 = array(
    0 => array(
        0 => "2D Design",
        1 => "3D Design & Modeling"),
    1 => array(0 => "Android Developer",
        1            => "Artificial Intelligence",
        2            => "Web Developer",
    ),
);
$arr2 = array(
    0 => array(
        0 => 5,
        1 => 10,
    ),
    1 => array(0 => 2,
        1            => 4,
        2            => 6,
    ),
);
$temp = [];
foreach ($arr1 as $k => &$v) {
    foreach ($v as $k1 => &$v1) {
        $temp[$k][$v1] = $arr2[$k][$k1];
    }
}
print_r($temp);

I have fetched values of first array arr1 as key to temp variable and map it with values of arr2as value to temp array.
This code will work even if index i.e. 0,1,2,3 can be anything.

Here is working code.

Upvotes: 2

Related Questions