8
votes

Comment empêcher Array_Merge pour renuméroter les touches numériques

J'ai un tableau qui ressemble à ceci: xxx

puis, j'ai écrit une fonction xxx

pour convertir le tableau à regarder comme ceci xxx

mais la sortie est xxx

je suppose que cela a quelque chose à voir avec la nature de la nature de la nature Array_Merge lui-même, qui selon le manuel PHP "Les valeurs de la matrice d'entrée avec des touches numériques seront renumérotées avec incrémentation des touches à partir de zéro dans la matrice de résultat."

y a-t-il un moyen de pour que je puisse produire le résultat souhaité avec ou sans array_merge?


3 Réponses :


0
votes

Drop the array_merge () et ajoute la touche et de la valeur sur le nouveau $ arr_list xxx


2 commentaires

ou comme @plagueeditor dit: $ arr_list = $ Arr_list + (tableau ($ Arr_value [$ str_key] => $ arr_value]));


J'utilise les deux réellement: d. une sorte d'exercice pour moi. Merci.



1
votes

Pourquoi n'essayez-vous pas simplement une approche beaucoup plus simple:

function array_to_list($arr_data, $str_key, $str_value) {
    $arr_list = array();
    if (is_array($arr_data)) {
        foreach($arr_data as $arr_value) {
            if (isset($arr_value[$str_key]) && isset($arr_value[$str_value])) {

                // This is the changed line:
                $arr_list[ $arr_value[$str_key] ] = $arr_value[$str_value];

            }
        }
    }
    return $arr_list;
}


1 commentaires

Je me demande pourquoi votre solution ne s'est pas venue à ma tête plus tôt. Merci. Être plus rapide, je pense que je peux sauver les frais généraux plutôt qu'avec l'ancien.



17
votes

Utilisez '+' opérateur au lieu de array_merge () : xxx

}


1 commentaires

C'était exactement ce dont j'avais besoin (pour un but plus simple) ... pour préparer une clé «0» à un tableau avec des touches numériques sans renumber les clés.