Объединить два элемента массива в новый - PullRequest
1 голос
/ 24 июня 2019

у меня два массива.

 $a = ['0' => 1, '1' => 2, '2' => 3]
 $b = ['0' => 4, '1' => 5, '2' => 6]

я хочу создать новый массив, подобный этому

 $c = [['a' => 1, 'b' => '4'], ['a' => '2', 'b' => '5']]

Я пробовал эти функции array_merge, array_merge_recursive, но не получил положительных результатов

$data = array_merge_recursive(array_values($urls), array_values($id));

Ответы [ 4 ]

5 голосов
/ 24 июня 2019

Вы должны применить array_map () с пользовательской функцией:

$newArray = array_map('combine',array_map(null, $a, $b));

function combine($n){

    return array_combine(array('a','b'),$n);
}

print_r($newArray);

Выход: - https://3v4l.org/okML7

0 голосов
/ 24 июня 2019

Идея состоит в том, чтобы иметь массив $ab = ['a','b'] и массив из обоих ваших массивов, как этот $merged_array = [[1,4],[2,5],[3,6]].
Теперь мы можем объединить массив $ab с каждым элементом $merged_array, и это будет тот результат, который нам нужен.

   $first = ['0' => 1, '1' => 2, '2' => 3];
   $second = ['0' => 4, '1' => 5, '2' => 6];

   $merged_array = [];
   for($i=0;$i<count($first);$i++)
   {
        array_push($merged_array,[$first[$i],$second[$i]]);
   }

   $final = [];
   $ab = ['a','b'];
   foreach($merged_array as $arr)
   {
       array_push($final,array_combine($ab, $arr));
    }
    print_r($final);
0 голосов
/ 24 июня 2019

Вы можете использовать foreach, чтобы приблизиться к этому

$a = ['0' => 1, '1' => 2, '2' => 3];
$b = ['0' => 4, '1' => 5, '2' => 6];
$res = [];
$i = 0;
$total = 2;
foreach($a as $k => $v){
  $res[$i]['a'] = $v;
  $res[$i]['b'] = $b[$k];
  $i++;
  if($i == $total) break;
}
0 голосов
/ 24 июня 2019

Попробуйте это

$c = array_merge($a,$b)
$d[] = array_reduce($d, 'array_merge', []);

Это объединит два массива и уменьшит и повторно объединит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...