Accueil > Forum > > > > Fonction Implode
Fonction Implode
mercredi 17 septembre 2008 à 18:40:58 |
Fonction Implode

sbach73
|
Bonjour, J'ai actuellement un problème que ne n'arrive pas à résoudre. J'aimerai pouvoir faire une fonction qui m' implode avec plusieurs séparateurs un tableau multidimensionnel. Est ce possible ? Si, oui est ce qu' une âme charitable peut me donner une fonction pour. Merci. sbach73
|
|
mercredi 17 septembre 2008 à 21:54:06 |
Re : Fonction Implode

coucou747
|
salut
je ne comprends pas ce que tu entends par plusieurs separateurs...
|
|
jeudi 18 septembre 2008 à 12:32:26 |
Re : Fonction Implode

sbach73
|
Désolé je me suis mal exprimé. Le mieux, c'est l'exemple : J'ai un tableau multidimensionnel : array(5) { [0]=>array(4) { [0]=>array(2) { [0]=>string(3) "rp1" [1]=>string(3) "200" } [1]=>array(2) { [0]=>string(3) "rp2" [1]=>string(3) "300" } [2]=>array(2) { [0]=>string(3) "rp3" [1]=>string(3) "190" } }
[1]=>array(4) { [0]=>array(2) { [0]=>string(3) "rp1" [1]=>string(3) "255" } [1]=>array(2) { [0]=>string(3) "rp2" [1]=>string(3) "150" } [2]=>array(2) { [0]=>string(3) "rp3" [1]=>string(3) "35" } } }
Je voudrais donc faire une fonction qui utilise la fonction implode pour rassembler le tableau selon le schéma que je vais lui donner. Exemple de résultat : rp1-200|rp2-200|rp3-190\n rp1-255|rp2-150|rp3-35 Le schéma est donc : array("-", "|","\n") ( regroupement avec - puis avec | puis avec \n ) Voila j'espère que cet exemple sera plus parlant. sbach73
|
|
vendredi 19 septembre 2008 à 11:47:57 |
Re : Fonction Implode

mike1310
|
ça m'a l'air bien compliqué tous ces tableaux de tableaux ... tu n'as pas essayé de réduire tes tableaux ? Je veux dire par la qu'il y a forcemment moyen de les rassembler en amont.
Comment les obtiens tu ces tableaux ?
Sinon il faudrait imbriqué autant de foreach que tu as de tableaux contenant tes données (donc un truc assez lourd niveau code)..
|
|
vendredi 19 septembre 2008 à 14:26:55 |
Re : Fonction Implode

mike1310
|
tiens j'ai trouver un truc intéressant :
function array_implode($arrays, &$target = array()) { foreach ($arrays as $item) { if (is_array($item)) { array_implode($item, $target); } else { $target[] = $item; } } return $target; }
$a = array('a', 'b', array('c', 'd', array('e'), 'f'), 'g', array('h')); echo join(' - ', array_implode($a));
ça renvoi ceci :
a - b - c - d - e - f - g - h
|
|
vendredi 19 septembre 2008 à 18:01:43 |
Re : Fonction Implode

sbach73
|
Ma fonction explode me permet de spécifier un schéma d'explosion sur du texte a exploser :
<?php
function explode_recursive($delimiters, $string) {
if (!is_array($delimiters)) { $delimiters = array($delimiters); } $delimiter = array_shift($delimiters); if (!empty($delimiters)) { $arExploded = explode($delimiter, $string); if ($arExploded !== false) { foreach ($arExploded as $key => $value) { $arExploded[$key] = explode_recursive($delimiters, $value); } } return $arExploded; } else { return explode($delimiter, $string); } }
/* Exemple : */ $Text = 'rp1:200-rp2:300-rp3:190-ep:4||1.5|60|\n \n \n 4-5-10-14|'; $Delimiteurs = array('\n','|','-',':');
var_dump(explode_recursive($Delimiteurs, $Text));
?>
En fait il faut que je fasse l'inverse de cette fonction.
sbach73
|
|
mercredi 24 septembre 2008 à 13:19:52 |
Re : Fonction Implode

TASIOT
|
Réponse acceptée !
Voici la fonction que tu désires tant ! :)
function implodePerso(array $array, array $separateurs, $level = 0){ $buffer = ''; $i = 0; foreach ($array as $key => $val) { if ($i > 0 && array_key_exists($level, $separateurs)){ $buffer .= $separateurs[$level]; } if (is_array($val)){ $buffer .= implodePerso($val, $separateurs, $level +1); } else { $buffer .= $val; } $i++; } return $buffer; }
Exemple d'utilisations :
$tab = array( array( array('rp1', '200'), array('rp2', '300'), array('rp3', '190') ), array( array('rp1', '255'), array('rp2', '150'), array('rp3', '35') ) );
echo implodePerso($tab, array("\n", '|', '-'));
Explications : Le second tableau transmis à ta fonction contient les séparateurs que tu désires appliquer par dimension de ton tableau. Ainsi "\n" sera appliqué 2 fois, "|" 3 fois et "-" 2 fois.
Si tu as des questions n'hésite pas !
PS: Le dernier argument de la fonction ($level) est utilisé en récursivité par la fonction elle-même. Il t'est inutile de le transmettre lors de l'appel de la fonction.
Roland Dufour, http://www.multiprog.net http://portfolio.multiprog.net
|
|
mercredi 24 septembre 2008 à 15:18:40 |
Re : Fonction Implode

sbach73
|
Merci infiniment de ce script cela va me faire gagner du temps.
sbach73
|
|
mercredi 24 septembre 2008 à 16:34:10 |
Re : Fonction Implode

TASIOT
|
Mais de rien, ce fut un plaisir de me casser la tête sur ton script durant une dizaines de minutes :). Tu noteras que si le séparateur du niveau de ton tableau n'existe pas (exemple : tu rajoutes une dimension à ton tableau sans modifier le tableau des séparateurs, aucun séparateur ne sera appliqué pour ce niveau. Tu pourrais palier à ce problème en définissant un séparateur par défaut dans ta fonction genre : if ($i > 0 && array_key_exists($level, $separateurs)){ $buffer .= $separateurs[$level]; } elseif ($i > 0){ $buffer .= ':'; // <= ton séparateur par défaut }
De même, si tu ne veux pas appliquer de séparateur sur les premiers niveaux, envoie simplement une chaine vide en tant que séparateur : echo implodePerso($tab, array('', '|', '-')); // Aucun séparateur sur le 1er niveau
Roland Dufour, http://www.multiprog.net http://portfolio.multiprog.net
|
|
Cette discussion est classée dans : fonction, implode
Répondre à ce message
Sujets en rapport avec ce message
PB implode Explode [ par Jey101 ]
je souhaite enregistrer differentes valeurs dans un champ de base de données, pour cela je voudrais utiliser une fonction implode(). le truc est que j
préchargement d'images [ par putch ]
voial j'ai un souci avec une fonction que je souhaite réaliser.Celle-ci doit précharger dans le navigateur toutes les images d'un répertoire.function
fonction perso dans requete SQL [ par martiall ]
Salut à toutes et tous,Totalement débutant en PHP et mysql, j'ai l'habitude d'utiliser access. D'ou mon problème :disons que j'ai une fonction astro($
Droit d'accès à un répertoire en fonction de l'heure [ par jack ]
Bonjour à tousC'est mon premier post en dehors de vbfrance, soyez indulgents, je connais pas grand chose au php !La question : Est-il pensable de modi
preview d'un formulaire [ par netwebzone ]
Bonjour,Je ne sais pas si je suis dans le bon forum, parce que j'utilise PHP et javascript et je ne sais pas ou est vraiment le problème... je m'expli
MAJ tableau en fonction de la valeur d'une liste déroulante [ par Gagou_c ]
Bonjour,Je voudrais afficher des informations dans un tableau, en fonction de la valeur d'une liste déroulante.Il faudrait que je mette à jour la page
Redirection chez FREE [ par lolorenzeb ]
Bonjour à tous,voila j'ai héberger mon site chez free mais j'ai des problèmes avec une fonction de redirection.j'utilise cette fonction et en local ca
Déclaration variable [ par Gagou_c ]
Bonjour, J'utilise une fonction JavaScript dans une page php.J'apelle ma fonction :onChange=Lien($profil)et ma fonction est kome ça :function Lien($pr
compression de bmp [ par thunderfear ]
bonjour, J'aimerai compresser des images bmp. J'ai fait le même avec des jpg mais je me sert de la fonction imagejpg(). La fonction imagebmp() n'exist
Récuperer un texte entre deux balises spécifiques [ par yvain91 ]
Bonjour j'aurai besoin de récupérer du texte dans un fichier que j'ai ouvert avec la fonction fopen. Ce texte se trouve entre deux balises facilement
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|