Tableau et chaine PHP

Résolu
bilouze Messages postés 28 Statut Membre -  
bilouze Messages postés 28 Statut Membre -
Bonjour,

J'ai une chaine :

$str = ''article:19;client:1';

que je voudrai transformer en un tableau qui donnerait ceci :

$array = array('article'=>19, 'client'=>1);

en l'affichant avec print_r($array); ça donnerait ça :

Array ( [article] => 19 [client] => 1 )

J'ai beau me secouer les méninges, là franchement je bloc! Est ce que quelqu'un aurait une petite solution pour faire ça ?

Merci d'avance;)

4 réponses

  1. ghepardo Messages postés 38 Statut Membre 4
     
    $str = "article:19;client:1";
    vous devez d'abord remplacer le point virgule:

    $Resultat_str = str_ireplace(";" , ":" , $Resultat_str);
    // remplacer le point virgule par deux points

    $strToArray = explode(":", $Resultat_str);

    // explosion du string et le convertir directement en Array
    // vous aurez:
    // $strToArray [0] => article; $strToArray [1] => 19; $strToArray [2] => client

    //à vous de jouer
    1
    1. bilouze Messages postés 28 Statut Membre
       
      Merci pour ta réponse;)
      en fait j'arrive à avoir un tableau de cette forme :

      Array ( [0] => article [1] => 19 [2] => client [3] => 1 )

      Ce que je n'arrive pas à faire c'est justement la partie "à vous de jouer" .
      Il faudrait créer un tableau à partir de celui ci-dessus où les valeurs pair deviendrait les clés et les valeurs impair deviendrait les valeurs de ces clés.
      Résultat : Array ( [article] => 19 [client] => 1 ) mais là je sais pas trop comment m'y prendre.
      0
    2. Luxerails Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   41
       
      A partir de là pour transformer les valeurs paires en clés et les valeurs impaires en valeurs de clés tu peux éventuellement faire

      $newArray = array();
      for($i=0;$i<count($strToArray);$i++)
      if($i % 2 == 0) $newArray[$strToArray[$i]] = $strToArray[$i + 1];
      0
    3. bilouze Messages postés 28 Statut Membre
       
      Super ça marche! Merci à vous 2 ;)
      0
  2. ghepardo Messages postés 38 Statut Membre 4
     
    bonsoir,
    pourquoi votre chaîne n'est pas elle même un tableau associatif:
    vous écrivez: $str ['article'] = 19; $str ['client'] = 1;

    si vous faites un print_r($str) ça vous donnera le même résultat.
    0
  3. bilouze Messages postés 28 Statut Membre
     
    Bonjour, en fait ce sont des paramètres renvoyés par Paypal lors d'un paiement. Je récupère un array avec dedans $tableau[CUSTOM] => article:19;client:1 donc je n'ai pas le choix ;)
    0
  4. Luxerails Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   41
     
    $str = "article:19;client:1";
    $str = explode(';', $str);
    $a = explode(':', $str[0]);
    $b = explode(':', $str[1]);
    $array = array($a[0] => (int) $a[1], $b[0] => (int) $b[1]);
    print_r($array);
    // Array ( [article] => 19 [client] => 1 ) [
    0
    1. ghepardo Messages postés 38 Statut Membre 4
       
      s'il existe plusieurs ";" vous ne trouverez pas une lettre au delà de z pour nommer vos variables, $strToArray un tableau ça sera mieux, cordialement
      0