Insérer un nouvel élément dans la matrice dans n'importe quelle position en PHP
Comment puis-je insérer un nouvel élément dans un tableau sur n'importe quelle position, par exemple dans le milieu de tableau?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver cela un peu plus intuitif. Il suffit d'un seul appel à la fonction
array_splice
:$inserted
tableau.(array)$scalar
est équivalent àarray($scalar)
, mais pour un tableau, un objet, ou la valeur null, il sera ignoré (array), de les convertir dans un tableau (objet), ou devenir un tableau vide (null) - voir php.net/manual/en/...Une fonction qui permet de l'insérer au integer et string positions:
Entier d'utilisation:
Chaîne D'Utilisation:
array_splice()
perd les clés, alors quearray_merge()
ne le fait pas. Ainsi les résultats de la première fonction peut être très surprenant... Surtout parce que si vous avez deux éléments avec la même clé, seule la valeur de ce dernier est gardé...+
au lieu dearray_merge
pouvez conserver les clésDe cette façon, vous pouvez insérer des tableaux:
Il n'y a pas de fonction native PHP (que je connais) que peut faire exactement ce que vous avez demandé.
J'ai écrit 2 méthodes qui, je crois, sont aptes à l'emploi:
Bien que plus rapide et beaucoup plus efficace en terme de mémoire, ce n'est vraiment appropriée lorsqu'il n'est pas nécessaire de maintenir les clés de la matrice.
Si vous avez besoin pour maintenir les touches, le suivant serait plus approprié;
insertBefore()
, vous devez retourner$tmpArray
au lieu de$input
.Basé sur @Halil grande réponse, est simple fonction de comment faire pour insérer un nouvel élément après une clé spécifique,
tout en préservant entier clés:
Si vous voulez garder les clés de la table initiale et également ajouter un tableau qui a les clés, puis d'utiliser la fonction ci-dessous:
Appel exemple:
C'est aussi une solution de travail:
les crédits vont à:
http://binarykitten.com/php/52-php-insert-element-and-shift.html
Solution de jay.lee est parfait. Dans le cas où vous souhaitez ajouter des élément(s) pour un tableau multidimensionnel, d'abord ajouter un seul dimensions, tableau, puis remplacez-la par la suite.
L'ajout d'un élément dans le même format de ce tableau ajouter tous les nouveaux indices de tableau que les éléments au lieu de simplement l'élément.
Remarque: de l'Ajout d'éléments directement à un tableau multidimensionnel avec array_splice d'ajouter son index les éléments au lieu de juste de cette façon.
Vous pouvez utiliser cette
Normalement, avec des valeurs scalaires:
Pour insérer un élément de tableau unique dans votre tableau n'oubliez pas d'envelopper le tableau dans un tableau (comme c'était une valeur scalaire!):
sinon, toutes les touches de la matrice sera ajouté, morceau par morceau.
Astuce pour l'ajout d'un élément au début d'un tableau:
alors:
mais:
array_unshift($a,'i am the new first element');
en cas de doute, puis NE pas UTILISER CES:
OU
car avec + tableau d'origine sera remplacée. (voir la source)
Essayez celui-ci:
C'est ce qui a fonctionné pour moi pour le tableau associatif:
La fonction source - ce blog. Il est également pratique de la fonction à insérer, AVANT de clé spécifique.
Appel exemple:
Pour insérer des éléments dans un tableau avec les clés de chaîne vous pouvez faire quelque chose comme ceci:
$src = array_merge($array_head, $ins, $array_tail);
?