[PHP] fonction qui retourne deux tableaux

Résolu
saad0n Messages postés 19 Statut Membre -  
Breub62 Messages postés 3452 Statut Membre -
Bonjour,

j'ai la variable $champs suivante : R0910R1002R1001RR1001.
qui contient deux types d'informations : par exemple un champs de type R0911 veut dire que Recu le 09/11/2010

je voudrais une fonction qui me retourne deux listes $etat et $date que je pourrais importer dans une base de données Mysql. Voila un petit shema pour illustrer cela:

champs etat date
R0910 True 2010/10/09
R1002 True 2010/02/10
R1001 True 2010/01/10
R True (Null ou autre)
R1001 True 2010/01/10

le premier gros problème que j'ai c'est que visiblement $champs n'est pas un tableau et du coup je n'arrive pas à le manipuler. Le deuxième est que je ne sais pas faire de fonction qui retourne deux variables en php.

Si quelqu'un peut m'aider à resoudre l'un (ou les deux problèmes j'apprecierai enormement )

Merci beaucoup

4 réponses

  1. Breub62 Messages postés 3452 Statut Membre 369
     
    En gros tu veux découper une chaîne de caractère de façon à séparer les infos qui t'intéresse. Voici qui peut t'être utile :

    https://www.php.net/manual/fr/function.substr.php
    1
    1. saad0n Messages postés 19 Statut Membre
       
      merci ca me resoud une partie du problème
      je vais tester ca et je te dis
      merci beauucoup
      0
    2. Breub62 Messages postés 3452 Statut Membre 369
       
      De rien ;-)
      Bonne continuation...
      0
    3. saad0n Messages postés 19 Statut Membre
       
      désolé de te decevoir mais ca marche pas :)
      le problème c'est que $champs ca a l'air d'etre une chaine de tableaux :0 . En gros lorsque je fais un is_array( $champs ) ca me retourne : 11111
      du coup quand je fais
      substr($champs, 1) su $chamsp de cette forme : R1002R1005R0909
      ca me retourne 100210050909
      et si je fais substr($champs, 5) pour supprimer R1002 ca me retourne une chaine vide
      ???????
      0
    4. Breub62 Messages postés 3452 Statut Membre 369
       
      Je comprends pas pourquoi ça marcherait avec 1 et pas avec 5... Tu n'as pas fait de faute de frappe pour substr($champs, 5)??
      0
    5. saad0n Messages postés 19 Statut Membre
       
      le problème est qu'il ne me traite pas $champs comme une seule chaine de caractères
      normalement si je fais substr("R1002R1005R0909",5) il doit me retourner R1005R0909
      et lui il supprime tout pcq jai limpression qu'il me fait un substr("R****",5 ) sur tous les blocs
      0
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Déjà, il faudrait savoir ce qu'est la variable $champs.

    Je te conseille donc de mettre ce bout de code :
    var_dump($champs);

    Ensuite, pour mieux visualiser le résultat, il est préférable d'afficher le code source de la page dans le navigateur (pour avoir les retours à la ligne, sinon on ne voit rien c'est tout sur une ligne).

    Xavier
    1
    1. saad0n Messages postés 19 Statut Membre
       
      salut
      merci du conseil
      voila ce que ca donne ( attention aux yeux )
      string(1) " " string(0) "" string(5) "R1002" string(5) "R1005" string(0) "" string(0) "" string(5) "R0909" string(5) "R0911" string(0) "" string(0) "" string(5) "R0909" string(5) "R0910" string(0) "" string(0) "" string(5) "R1001" string(5) "R1003" string(0) "" string(0) "" string(5) "R1001" string(5) "R1003" string(0) "" string(0) "" string(5) "R1001" string(5) "R1003" string(0) "" string(0) "" string(5) "R1002" string(5) "R1004" string(0) "" string(0) "" string(5) "R1002" string(5) "R1004" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(5) "R1006" string(5) "R1006" string(0) "" string(0) "" string(5) "R1006" string(0) "" string(0) "" string(0) "" string(5) "R1002" string(0) "" string(0) "" string(0) "" string(5) "R0912" string(5) "R1004" string(0) "" string(0) "" string(5) "R0912" string(5) "R1006" string(0) "" string(0) "" string(5) "R1001" string(0) "" string(0) "" string(0) "" string(5) "R1001" string(5) "R1004" string(0) "" string(0) "" string(5) "R1003" string(5) "R1004" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(5) "R1003" string(5) "R1006" string(0) "" string(0) "" string(5) "R1006" string(0) "" string(0) "" string(0) "" string(5) "R1006" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) ""
      0
    2. saad0n Messages postés 19 Statut Membre
       
      qu'est ce que t'en penses ?
      0
    3. Breub62 Messages postés 3452 Statut Membre 369
       
      Ça ressemble quand même à un tableau avec beaucoup de champs vide...Donc je vois pas comment tu peux savoir à l'avance où chercher les données qui t'intéressent...
      0
    4. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      T'as rien oublié ? Y a pas un array() quelque chose tout au début ?
      Parce que là, ça ne ressemble pas à un tableau mais plutôt à des variables de chaînes mises bout à bout...
      0
    5. Breub62 Messages postés 3452 Statut Membre 369
       
      Oui ça ressemble à un tableau de string mais sans en être un. Je sais pas exactement quel type de variable c'est...
      0
  3. saad0n Messages postés 19 Statut Membre
     
    salut

    ben finalement même si le type de mon champs est bizarre , substr arrive à gérer comme tu l'as suggéré Breub62 .La fonction var_dump a été très utile dans ce sense la. Merci beaucoup tout le monde et désolé pour le temps perdu . Pour la peine je mets ma solution ( on sait jamais )

    $champs_etat= substr($champs,0,-4);
    $champs_int= str_replace( 'R', 'true',$champs_etat );
    $champs_date= substr($champs,5);

    c'etait tout con

    Re Merci tout le monde
    0
    1. Breub62 Messages postés 3452 Statut Membre 369
       
      De rien. Bonne continuation ;-)
      0