0
votes

PHP Array_Merge_Recursive Fonction avec des valeurs vides

J'ai ci-dessous deux tableaux et utilise la fonction Array_Merge_Recursive car j'ai des matrices multidimensionnelles, mais lorsque l'une des touches de la première matrice a une valeur vide et une même clé contient une matrice dans un autre tableau, puis une fonction array_merge_recrsive, ajoutez "0 "Clé de cette clé.

par exemple xxx

& résultat est xxx

donc, il ajoute [0] clé pour [ test-for-brouillon_subform1] tableau. Je ne veux pas ça. Y a-t-il une autre fonction de tableau PHP pour éviter cette situation?


10 commentaires

Votre tableau $ B Spécifie que Test-For-Draw_SubForm1 contient un tableau, vous ne spécifiez pas une clé, de sorte qu'il devient 0. var_dump ($ B) et vous verrez ce que je veux dire. Le Array_Merge_Recursive fonctionne comme prévu.


Créez votre propre fonction.


@AneSessaban test-for-drad_subform1 sera toujours un tableau pour moi dans le deuxième tableau I.e. pour $ b


Donc, vous ne voulez pas de fusionnez , vous voulez réellement le tableau dans $ b ["test-for-drad_subform1"] à jeter La chaîne vide que vous receviez de $ a ["test-for-drad_subform1]] .


@Mangesh Vous pouvez ensuite appeler array_filter sur les deux tableau avant la fusion ... Cochez ma réponse


@Mangesh, si le blanc aurait été une chaîne non blanche , vous attendez-vous à ce que la sortie soit différente? Est dans ce cas la [0] souhaitée?


De même, si la clé n'existe pas du tout dans b , voulez-vous que la clé soit dans la sortie (avec la chaîne vierge en tant que valeur)?


@Davidwinder merci beaucoup..C'est des travaux


@Mangesh Si oui, veuillez marquer la réponse comme acceptée afin d'un autre peut l'utiliser


@Mangesh, pourriez-vous toujours répondre aux rares questions que j'ai posées ci-dessus?


3 Réponses :


0
votes

Un moyen simple de fixer ce comportement (pour ce cas particulier) consiste à boucler via le tableau $ A code> Supprimer toutes les valeurs ayant une chaîne vide avant de la fusionner.

foreach($a as $k => $v) {
    if($v == '') {
        unset($a[$k]);
    }   
}


0 commentaires

1
votes

Vous pouvez utiliser Filtre de tableau et créer votre Fonction propre qui fait que cela recursement comme xxx

appelle cette fonction avec votre tableau

Si tout ce que vous voulez, c'est supprimer vide, vous pouvez également le faire avec array_filter < / code> sur les tableaux avant de les fusionner


0 commentaires

0
votes

Lorsque l'une des deux valeurs (qui doit être fusionnée) n'est pas un tableau, vous ne voulez que l'autre d'entrer dans le résultat, ignorant la valeur non-matrice.

Il n'y a pas de fonction intégrée qui serait Faites cela, vous auriez donc besoin d'écrire votre propre: xxx


0 commentaires