skip to Main Content

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.

3

Answers


  1. 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
        )
    
     )
    
    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
  3. 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)
    );
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search