[PHP] Twee arrays bij elkaar zetten met overlappende keys

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Volgens mij is dit een vraag in de categorie [simpel], maar ik kom er niet uit.

Ik heb twee arrays:

code:
1
2
3
4
5
6
7
8
9
10
$array1 = [
  0 => ['inhoud 1'],
  1 => ['inhoud 2'],
];

$array2 = [
  0 => ['inhoud 3'],
  1 => ['inhoud 4'],
  2 => ['inhoud 5'],
]


Deze wil ik combineren, maar hierbij moet de data behouden blijven. waarbij de keys van $array2 dus herschreven mogen worden, zodat ik uiteindelijk de volgende array overhoud:

code:
1
2
3
4
5
6
7
$array3 = [
  0 => ['inhoud 1'],
  1 => ['inhoud 2'],
  2 => ['inhoud 3'],
  3 => ['inhoud 4'],
  4 => ['inhoud 5'],
]


Ik heb array_push() en array_combine() geprobeerd. Helaas. Ook array_shift() geeft niet het gewenste resultaat. Welke functie zie ik over het hoofd?

Beste antwoord (via Wolf3D op 05-02-2021 16:28)


  • GQAH
  • Registratie: Augustus 2010
  • Laatst online: 13:33

GQAH

King Tux

Het is inderdaad niet al te moeilijk. Je moet array_merge gebruiken.

code:
1
$array3 = array_merge($array1, $array2);


Zie hier.

[ Voor 15% gewijzigd door GQAH op 05-02-2021 16:16 . Reden: Array_merge voorbeeld toegevoegd ]

GQAH - Good, Quick and Helpful

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • GQAH
  • Registratie: Augustus 2010
  • Laatst online: 13:33

GQAH

King Tux

Het is inderdaad niet al te moeilijk. Je moet array_merge gebruiken.

code:
1
$array3 = array_merge($array1, $array2);


Zie hier.

[ Voor 15% gewijzigd door GQAH op 05-02-2021 16:16 . Reden: Array_merge voorbeeld toegevoegd ]

GQAH - Good, Quick and Helpful


Acties:
  • +1 Henk 'm!

  • Marc3l
  • Registratie: December 2005
  • Laatst online: 02-10 22:36

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Wow! Die had ik zelf genegeerd omdat bij de beschrijving het volgende staat:

code:
1
2
3
4
5
6
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>


Will output:

code:
1
2
3
4
5
6
7
8
9
10
Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)


Daarbij wordt color => red overschreven door color => green, met als eindresultaat dat color => red is verdwenen.
Ik ging er vanuit dat dat in mijn geval dus mis zou gaan, maar het blijkt wel te werken! :-)

Acties:
  • +1 Henk 'm!

  • Essie689
  • Registratie: Januari 2011
  • Laatst online: 23-09-2022
Vanaf php8 kan je beter

$newArray = [...$arrayA, ...$arrayB];
De spread operator is sneller dan array_merge().

Let we op! De index keys worden op deze manier niet behouden.

[ Voor 22% gewijzigd door Essie689 op 05-02-2021 18:13 ]