287 votes

PHP: fusionner deux tableaux tout en conservant les clés au lieu de les réindexer?

Comment puis-je fusionner deux tableaux (un avec chaîne => paires de valeurs et un autre avec int => paires de valeurs) tout en conservant les clés string / int? aucun d'entre eux ne se chevauchent jamais (car l'un n'a que des chaînes et l'autre n'a que des entiers).

voici mon code actuel (qui ne fonctionne pas, car array_merge réindexe le tableau avec des clés entières):

 // get all id vars by combining the static and dynamic
$staticIdentifications = array(
 Users::userID => "USERID",
 Users::username => "USERNAME"
);
// get the dynamic vars, formatted: varID => varName
$companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']);
// merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***)
$idVars = array_merge($staticIdentifications, $companyVarIdentifications);
 

Merci!

615voto

SirDarius Points 13074

Vous pouvez simplement ajouter les tableaux:

 >> $a = array(1, 2, 3);
array (
  0 => 1,
  1 => 2,
  2 => 3,
)
>> $b = array("a" => 1, "b" => 2, "c" => 3)
array (
  'a' => 1,
  'b' => 2,
  'c' => 3,
)
>> $a + $b
array (
  0 => 1,
  1 => 2,
  2 => 3,
  'a' => 1,
  'b' => 2,
  'c' => 3,
)
 

74voto

CRK Points 121

Considérant que vous avez

 $replaced = array('1' => 'value1', '4' => 'value4');
$replacement = array('4' => 'value2', '6' => 'value3');
 

Faire $merge = $replacement + $replaced; produira:

 Array('1' => 'value1', '4' => 'value2', '6' => 'value3');
 

Le premier tableau de sum aura des valeurs dans la sortie finale.

Faire $merge = $replaced + $replacement; produira:

 Array('1' => 'value1', '4' => 'value4', '6' => 'value3');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X