2011-02-18 4 views
2

J'ai besoin de la fonctionnalité de php explode(), mais sans les séparateurs.php fractionnement de grands nombres (comme exploser)

par exemple, en transformant la variable "12345" en tableau, en maintenant chaque nombre séparément.

est-ce possible? J'ai déjà googlé mais seulement trouvé exploser(), ce qui ne semble pas fonctionner.

merci!

Répondre

7

avec une chaîne en php:

$foo="12345"; 
echo $foo[0];//1 
echo $foo[1];//2 
//etc 

ou (de la preg_split()) page dans le manuel

$str = 'string'; 
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); 
print_r($chars); 

ENCORE MIEUX:

$str = 'string'; 
$chars=str_split($str, 1) 
print_r($chars); 

référence de preg_split () vs str_split()

function microtime_float() 
{ 
    list($usec, $sec) = explode(" ", microtime()); 
    return ((float)$usec + (float)$sec); 
} 


$str = '12345'; 
$time_start = microtime_float(); 
for ($i = 0; $i <100000; $i++) { 
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); 
//$chars=str_split($str, 1); 
} 
$time_end = microtime_float(); 
$time = $time_end - $time_start; 

echo "$time seconds\n"; 

résultats:

str_split =0.69 
preg_split =0.9 
+0

oh, ace! Je me sens vraiment un peu stupide maintenant :) merci! –

+0

'preg_split' serait un très mauvais choix pour cela – Phil

+0

@Phil Brown pourquoi? la vitesse? à moins que vous ne le fassiez 10000 fois sera-t-il perceptible à un niveau humain? –

4

Si vous voulez vraiment créer un tableau, puis utilisez str_split(), c.-à-

echo '<pre>'. print_r(str_split("123456", 1), true) .'</pre>'; 

entraînerait

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 4 
    [4] => 5 
) 
1

Votre numéro peut être transformé en chaîne puis agir comme un tableau

$i = 2342355; $i=(string)$i; 
//or 
$i='234523452435234523452452452'; 

//then 

$i[2]==4 

//numeration started from 0