[RESOLU] separator dans array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] separator dans array

Re: separator dans array

par wisefun77 » 29 avr. 2022, 17:00

Bonjour two3d,
Merci je vais y travailler dès lundi.
Bon week-end.

Re: separator dans array

par two3d » 29 avr. 2022, 16:15

Tu crée un tableau dans lequel tu assignera ou enlèvera les valeurs que tu souhaite, exemple :
$tableau = [
  'ma clé' => 'ma valeur',
  'ma clé sans valeur pour le moment' => '',
  'etc' => 'etc...'
];

//assigner une valeur :
$tableau['ma clé'] = 'ma valeur..'; //il est préférable de mettre des clé sans accents, comme ma_cle plutôt que ma clé

Re: separator dans array

par wisefun77 » 29 avr. 2022, 14:56

Bonjour two3d,
C'est bien ce qu'il me semblais, que je partais dans de mauvaises directions.

Merci

Re: separator dans array

par two3d » 29 avr. 2022, 11:24

Tu ty prends mal, tu est en train de réinventer la roue, pourquoi ne pas créer directement un tableau puis d'aller chercher les valeur dans ton tableau ?

https://www.php.net/manual/fr/language.types.array.php

Re: separator dans array

par wisefun77 » 29 avr. 2022, 10:36

Bonjour,
Désolé de revenir si tard, mais dur dur la première semaine.
Voici ce que j'ai fait.

Code : Tout sélectionner

<?php $string = "[ADC_START][SDP][GUICHET][DEM][USER_CMDB_DIF_NON][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][DEM_PDT_PCF < ASSET_XXX> < TPX_1>][PRT_PRP < ASSET_ XXX < TPX_1>]7 [SFW_TLD < TPX_1 > ][RDV_NON][RDV_BAL][RSDP_NON][NO COMMENT][19f16457][22/04/22-17:12][Version_2.02][ADC_END] "; // Définition du tableau final $clean_array = []; // On split la chaine selon les crochets ouvrants $string_to_array = preg_split('#\[#i', $string); foreach ($string_to_array AS $v) { // On nettoie le string pour retirer le crochet fermant $str = trim(str_replace(']', '', $v)); // Si la chaine n'est pas vide, on l'ajoute à notre tableau final if (!empty($str)) { $clean_array[] = $str; } } //echo PHP_EOL . '<pre>$clean_array: ' . print_r($clean_array, true) . '</pre>' . PHP_EOL; ?> <br/><br/> ------------------------ Recherche des donnees. <br/><br/> <?php $tab = $clean_array; if(in_array('RDV_NON',$tab)){ //------------------------ array_slice $input =$tab; // retourne chaine complète sans le numéro de la dernière balise. $output = array_slice($input, 0); // notez les clés d'index différentes echo 'trouvé ARRAY ==> '; print_r(array_slice($input,0)); // print_r(array_slice($input, 2, -1, true)); } else{ echo 'pas trouvé'; } ?>
Cela affiche:
[15] => RDV_NON [16] => RDV_BAL [17] => RSDP_NON

Code : Tout sélectionner

trouvé ARRAY ==> Array ( [0] => ADC_START [1] => SDP [2] => GUICHET [3] => DEM [4] => USER_CMDB_DIF_NON [5] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [6] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [7] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [8] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [9] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [10] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [11] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [12] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [13] => PRT_PRP < ASSET_ XXX < TPX_1>7 [14] => SFW_TLD < TPX_1 > [15] => RDV_NON [16] => RDV_BAL [17] => RSDP_NON[18] => NO COMMENT [19] => 19f16457 [20] => 22/04/22-17:12 [21] => Version_2.02 [22] => ADC_END )
Mais je ne sais récupérer la clé d'index de la balise recherchée, pour tout reclasser.
Car il faudrait que la chaine soit ainsi.

Code : Tout sélectionner

Array ( [0] => ADC_START [1] => SDP [2] => GUICHET [3] => DEM[4] => USER_CMDB_DIF_NON[15] => RDV_NON [16] => RDV_BAL [17] => RSDP_NON [5] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [6] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [7] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [8] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [9] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [10] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [11] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [12] => DEM_PDT_PCF < ASSET_XXX> < TPX_1> [13] => PRT_PRP < ASSET_ XXX < TPX_1>7 [14] => SFW_TLD < TPX_1 >[18] => NO COMMENT [19] => 19f16457 [20] => 22/04/22-17:12 [21] => Version_2.02 [22] => ADC_END )
Merci.

Re: separator dans array

par two3d » 26 avr. 2022, 12:53

$tableau n'est pas une chaine mais un array

$tableau = [tableau] == array
$tableau = "[tableau]" == string

Cette ligne est incorrecte :

$tri = "[""]", $tableau);

Re: separator dans array

par GuillaumeLM » 25 avr. 2022, 11:01

Bonjour, que veux-tu faire exactement?
Là, le code que tu nous donnes ne peut te renvoyer QUE null.
Ce que tu nous à mis veux dire: le 1er tableau s'appel ADC_START, le 2nd s'appel HD, etc
En fait aucune valeur n'est assigné. voir ici
Sauf erreur de ma part ce n'est pas un problème de séparateur que tu as mais plutôt d'écriture de ton tableau.

Re: separator dans array

par or 1 » 21 avr. 2022, 20:49

https://www.php.net/manual/fr/function.explode.php pour passer d'une chaine à un tableau.

mais il n'est pas dit que la façon de procéder choisie, une chaine qui augmente au fur et à mesure, est la meilleure solution. avoir un tableau indexé me paraitrait une meilleure idée.

separator dans array

par wisefun77 » 21 avr. 2022, 17:02

Bonjour,
J'essaye d'apprendre à faire des tableaux.
J'ai vu qu'il faut désigner un separator pour découper une chaine en tableau.
Dans ma chaine les infos à mettre dans un tableau sont entre deux crochets.
[fdsjlfjflsjs][jkouieoruiur].
quand je fais appel à separator, aucune info ne remonte de IntelliSense.

Code : Tout sélectionner

$tableau = [ADC_START][HD][PMAD][USER_CMDB_DIF_NON][SFW_ < ASSET_XXX > < TPX _1 > ][RDV_NON][NO COMMENT][21/04/22-10:49][CHEKSOUN][Version_2.02][ADC_END] ; if (strpos($tableau,'[RDV_NON]') !== false){ $tri = "[""]", $tableau); $1 = $tableau[0]; $2 = $tableau[1]; $3 = $tableau[2]; } // trier les balises suivant leur contenue Si [RDV_NON] ajouter [RDV_NON]. // [ADC_START][SDP][GUICHET][DEM][USER_CMDB_DIF_NON][RDV_NON][RDV_NON][RSDP_NON][SFW_ < ASSET_XXX > < TPX _1 > ][NO COMMENT][21/04/22-10:49][CHEKSOUN][Version_2.02][ADC_END] ;
Merci.