Transformé chaine en array

Dumbo -  
 rkimwebmaster -
Salut,

Je souhaiterais savoir comment on fait pour transformer une chaine de caractères aléatoires en list ou array (PHP).

Un exemple qui ne fonctionne pas :

$var = 'chainealéatoire';

foreach($element as $var)
{
    // instruction
}


Merci.
A voir également:

8 réponses

Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
3
mrprout
 
Tu as quasiment donné toi-même ta réponse...

$var = 'chainealéatoire';

foreach( (array) $var as $element) {
echo $element;
}

// Affichera : chainealéatoire

// Tu peux aussi faire ceci sur une chaîne, comme si c'était un tableau :
echo $var[0]; // Affiche : c
echo $var[1]; // Affiche : h
echo $var[2]; // Affiche : a
echo $var[3]; // Affiche : i
// etc...

++
2
jthoorens
 
Ça ne marchera pas. En fait, (array)$var transforme la chaîne en un tableau comportant un seul élément contenant la chaîne. Pour le voir, il suffit de remplacer
echo $element;

par
 echo $element."-";

L'affichage donnera
   chainealéatoire-

Je pense que la seule solution consiste à faire une boucle avec indice:
for($i=0;$i<strlen($var);$i++){  
   echo $var[$i].'-';  
}

SI on veut vraiment obtenir un tableau pour usage ultérieur:
$tabChar = array();  
for($i=0;$i<strlen($var);$i++){  
   $tabChar[] = $var[$i];  
}

C'est étonnant que PHP4 ne fournisse pas de fonction pour réaliser cela (ça existe en Java par exemple, mais en Java, String est une classe). Comme le dit Zep3k!GnO, en PHP5 il y str_split().
0
Dumbo
 
Merci :-)

Mais n'y a t-il pas une fonction en php4 ?

Sinon va falloir que j'installe php5.
0
rkimwebmaster
 
Essaye avec explode
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Je pense que passé a Php est du coup une bonne chose, ça te forcera à rester sur les nouvelles versions du langage...
Sinon, je ne vois pas trop avec les autres fonction, je ne sais pas trop pour Php4, p'tet ereg_split, d'après ce que j'ai vu ca doit fonctionner sous Php4, mais reste à trouvé le pattern correct en expression régulière...

Bon Courage.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dedale82 Messages postés 403 Date d'inscription   Statut Membre Dernière intervention   283
 
Salut,
essaye la fonction explode :
http://fr2.php.net/manual/fr/function.explode.php

Bonne journée.
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
le porblème avec explode c'est qu'il a dit pour transformer une chaine de caractères aléatoires.. après p'tet que c'est moi qui ai mal interprété ce qu'il veut...
0
Dumbo
 
Non Zep3k!GnO, tu as bien compris ce que je voulais.

C'est vrai dedale82, j'aurais peut-être pu essayer avec un explode, mais pour ça il aurait fallu que j'insère un caractère spécifique entre chaque caractères de ma chaine pour pouvoir faire cet explode, ce qui me semble un peu délicat comme méthode.

J'ai donc finalement installé php5.

Merci ;-)
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
COol :D

Bon Courage.
Tu vas voir PHP5 c'est bin :))
0
Th@o
 
Moi j'ai une solution (dans les deux sens):
/*
 * Transforme une variable en tableau
 * @param variable a trasformer
 * @return tableau
 */
function toTable($var) {
	$caractere = strlen($var);
	$i = 0;
	while($i != $caractere) {
		$table[$i] = substr($var,$i,1);
		$i++;
	}
	return $table;
}
/*
 * Transforme un tableau en variable
 * @param tableau a transformer
 * @return variable
 */
function toVar($table) {
	$size = count($table);
	for($i = 0; $i<$size; $i++) {
		$var .= $table[$i];
	}
	return $var;
}
0
elcodor
 
Une solution basique qui se porpose :

function get_chars($str){ 
  $chars = array(); 
  for($i=0; $i<strlen($str); $i++)
    $chars[] = substr($str, $i, 1);
  return $chars; 
} 
0
th@o
 
n'est-ce pas plutot :
function get_chars($str){ 
  $chars = array(); 
  for($i=0; $i<strlen($str); $i++) {
    $chars[$i] = substr($str, $i, 1);
  }
  return $chars; 
} 

tu avais oublié le $i dans $chars[]
0
creadiff Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   57
 
Ce n'est pas obligatoire, $chars[] = ... place la valeur à la suite du dernier élément inséré.

https://www.php.net/manual/fr/language.types.array.php
0
Tymo
 
$var = "abcdefghijklmnopqrstuvwxyz";
$i =0;
while($var[$i]) {
$array[] = $var[$i];
$i++;
} 
echo '<pre>'.print_r($array).'</pre>';


Ce qui affichera :
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s [19] => t [20] => u [21] => v [22] => w [23] => x [24] => y [25] => z )

Je pense que c'est ce que tu cherchais ^^
1