Bug sur array_merge_recursive php 5.4.4 ?

kalvin
Invité n'ayant pas de compte PHPfrance

14 janv. 2015, 17:17

Bonjour à tous,

Une question à propos du fonctionnement de la fonction "array_merge_recursive"

Soit le script suivant :

Code : Tout sélectionner

<?php $a = array( 'a' => array( 'b' => array( 'c' => array( ) ) ) ); $b = array( 'a' => array( 'b' => array( 'd' => array( ) ) ) ); $c = array_merge_recursive($a, $b); print_r($c);
On obtient alors le tableau suivant :

Code : Tout sélectionner

Array ( [a] => Array ( [b] => Array ( [c] => Array ( ) [d] => Array ( ) ) ) )
Ici pas de problème on retrouve bien nos deux clés "c" et "d" sous la clé "b".
En remplacant maintenant cette clé "b" par une clé "3" dans nos deux tableaux $a et $b on à donc le code suivant :

Code : Tout sélectionner

<?php $a = array( 'a' => array( '3' => array( 'c' => array( ) ) ) ); $b = array( 'a' => array( '3' => array( 'd' => array( ) ) ) ); $c = array_merge_recursive($a, $b); print_r($c);

On obtient alors le tableau suivant :

Code : Tout sélectionner

Array ( [a] => Array ( [3] => Array ( [c] => Array ( ) ) [4] => Array ( [d] => Array ( ) ) ) )
Cette fois les clés "c" et "d" ne se retrouve pas sous la même clé "3" ...
Est ce le comportement attendu ?

Merci d'avance pour vos réponses.

ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2015, 20:23

Si je comprends la documentation c'est normal :
Cependant, si deux tableaux ont la même clé numérique, la dernière valeur n'écrasera pas la précédente, mais sera ajoutée à la fin du tableau.

kalvin
Invité n'ayant pas de compte PHPfrance

15 janv. 2015, 14:28

Aie,

Merci beaucoup ! Et désolé pour le post inutile, cette phrase m'avait échappée ...

Si quelqu'un peut passer le post en résolu.

Plus qu'à trouver une fonction qui n’incrémente pas les clés numériques.

Merci encore.