Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 758 fois - Téléchargée 30 fois
<?php echo '<p style="font-size: 19px; font-weight: 700; text-decoration: underline;">Parsing of a comma delimited string to arrays</p>>'; echo 'On passe 2 variables, 1 avec le nom des champs, l\'autres avec les valeurs'; echo '<br />2 arrays sont retournes : <br /><li>$indexval contient les valeurs de l\'index (premiere colonne)</li>'; echo '<li>$val contient les valeurs du restant des colonnes</li>'; $tableField="index,field1,field2"; $tableValues="1i,field1-1,field1-2,2i,field2-1,field2-2,3i,field3-1,field3-2,4i,field4-1,field4-2"; $fields=explode(",",$tableField); //on cree un array a partir des 2 variables en les separant au niveau des virgules $values=explode(",",$tableValues); $nf=count($fields); // on compte le nombre de valeurs $nv=count($values); $indexval=array(); // on cree les 2 arrays pour le resultat final $val=array(); for ($i=0;$i<$nv;$i+=$nf) { $indexval[]=$values[$i]; //on recupere la valeur de l'index et on stocke for ($k=0;$k<$nf-1;$k++) { $l=$k+$i+1; // +1 pour eviter la valeur de l'index $val[$k][]=$values[$l]; on recupere la valeur et on stocke } } echo '<p style="font-size: 17px; font-weight: 700; ">les 2 variables passees :'; echo '<pre>'; echo '<li>$tableField</li>'; print_r($tableField); echo '<br /><li>$tableValues</li>'; print_r($tableValues); echo '<p style="font-size: 17px; font-weight: 700; ">le resultat'; echo '<br /><li>$indexval</li>'; print_r($indexval); echo '<br /><li>$val</li>'; print_r($val); echo '</pre>'; // exemple d'utilisation pour creer une requete SQL UPDATE $k=0; foreach ($indexval as $index) { $sql="UPDATE `table` SET "; $n=count($val);$i=0; while ($i<$n) { if ($i>0){$sql.=", ";} $sql.="`{$fields[$i+1]}` = '{$val[$i][$k]}'"; $i++; } $sql.=" WHERE `{$fields[0]}` = '$index' LIMIT 1"; echo "SQL : $sql<br />"; $k++; } ?>
4 sept. 2005 à 19:57
Je corrige de suite ...
Merci...
1 sept. 2005 à 16:29
Beau travail !
Tu utilise split, Mais tu n'as pas d'expressions rationnelles donc pour faire gagné du temps à ton script utilise explode !
31 août 2005 à 13:56
Merci.
30 août 2005 à 15:15
tu peux optimiser ton "for ($i=0;$i<count($val);$i++)"
$nb=count($val);
for($i=0;$i<$nb;$i++)
{
}
et tu peux mettre un while ça ira encore plus vite qu'un for ;-)
a +
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.