[RESOLU] separator dans array

Eléphant du PHP | 213 Messages

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.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

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.

Eléphanteau du PHP | 44 Messages

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.
L'illogisme n'est que la logique des autres!

Avatar du membre
Mammouth du PHP | 1564 Messages

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);

Eléphant du PHP | 213 Messages

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.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

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

Eléphant du PHP | 213 Messages

29 avr. 2022, 14:56

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

Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

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é

Eléphant du PHP | 213 Messages

29 avr. 2022, 17:00

Bonjour two3d,
Merci je vais y travailler dès lundi.
Bon week-end.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.