У меня есть 4 ассоциативных массива, как показано ниже:
$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' );
Я хочу «объединить» их в один массив, содержащий ассоциативные массивы, как показано ниже:
$data = array( array( 'id' => '7' , 'name' => 'Name 1' , 'marks' => '8', 'grade' => '4' ), array( 'id' => '8' , 'name' => 'Name 2' , 'marks' => '5', 'grade' => '2.5' ), array( 'id' => '9' , 'name' => 'another name', 'marks' => '8', 'grade' => '4' ) );
Я новый разработчик PHP и понятия не имею, как это сделать. Ваша помощь будет высоко оценена. спасибо
Я считаю, что это ваш массив
$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. Вы можете использовать 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. Вы можете использовать array_map
$final = array(); foreach ( array_map(null, $ids, $names, $marks, $grade) as $key => $value ) { $final[] = array_combine($keys, $value); } var_dump($final);
Вывод
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)