Merge multiple associative arrays to a single array of associative arrays

后端 未结 1 1361
庸人自扰
庸人自扰 2020-12-17 07:27

I have 4 associative arrays as per below:

$ids  = array(
      \'0\' => \'7\' ,
      \'1\' => \'8\' ,
      \'2\' => \'9\'
);
$names = array (
             


        
相关标签:
1条回答
  • 2020-12-17 07:49

    I believe this is your array

    $ids = array('0' => '7','1' => '8','2' => '9');
    $names = array('0' => 'Name 1','1' => 'Name 2','2' => 'another name');
    $marks = array('0' => '8','1' => '5','2' => '8');
    $grade = array('0' => '4','1' => '2.5','2' => '4');
    
    #New Keys
    $keys = array("id","name","marks","grade");
    

    A. You can use MultipleIterator

    $final = array();
    $mi = new MultipleIterator();
    $mi->attachIterator(new ArrayIterator($ids));
    $mi->attachIterator(new ArrayIterator($names));
    $mi->attachIterator(new ArrayIterator($marks));
    $mi->attachIterator(new ArrayIterator($grade));
    
    foreach ( $mi as $value ) {
        $final[] = array_combine($keys, $value);
    }
    var_dump($final);
    

    B. You can use array_map

    $final = array();
    foreach ( array_map(null, $ids, $names, $marks, $grade) as $key => $value ) {
        $final[] = array_combine($keys, $value);
    }
    var_dump($final);
    

    Output

    array
      0 => 
        array
          'id' => string '7' (length=1)
          'name' => string 'Name 1' (length=6)
          'marks' => string '8' (length=1)
          'grade' => string '4' (length=1)
      1 => 
        array
          'id' => string '8' (length=1)
          'name' => string 'Name 2' (length=6)
          'marks' => string '5' (length=1)
          'grade' => string '2.5' (length=3)
      2 => 
        array
          'id' => string '9' (length=1)
          'name' => string 'another name' (length=12)
          'marks' => string '8' (length=1)
          'grade' => string '4' (length=1)
    
    0 讨论(0)
提交回复
热议问题