2010-07-19 9 views
13

Comment puis-je convertir une chaîne en tableau? Par exemple, j'ai cette chaîne:PHP convertir la chaîne en tableau

$str = 'abcdef'; 

Et je veux:

array(6) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    [2]=> 
    string(1) "c" 
    [3]=> 
    string(1) "d" 
    [4]=> 
    string(1) "e" 
    [5]=> 
    string(1) "f" 
} 
+6

Si vous avez besoin d'accéder à un décalage spécifique dans la chaîne, vous pouvez le faire sans diviser la chaîne. Les chaînes peuvent être utilisées avec la notation Array Access. '$ str [0]' retournerait 'a'. Vous ne pouvez pas utiliser foreach ou l'une des fonctions de tableau à ce sujet alors. – Gordon

Répondre

6

Vous pouvez boucler par votre chaîne et retourner chaque caractère ou un ensemble de caractères en utilisant substr en php. Voici une boucle simple.

$str = 'abcdef'; 
$arr = Array(); 

for($i=0;$i<strlen($str);$i++){ 
    $arr[$i] = substr($str,$i,1); 
} 

/* 
OUTPUT: 
$arr[0] = 'a'; 
$arr[1] = 'b'; 
$arr[2] = 'c'; 
$arr[3] = 'd'; 
$arr[4] = 'e'; 
$arr[5] = 'f'; 
*/ 
6

Chaque chaîne est un tableau en PHP

donc simplement faire

$str = 'abcdef'; 
echo $str[0].$str[1].$str[2]; // -> abc 
+3

Le libellé de cette réponse est trompeur – Pacerier

+7

Ceci n'est pas vrai. Le fait que vous pouvez utiliser [] avec une chaîne ne fait pas un tableau. Essayez 'var_dump (is_array (" une chaîne "));' et vous verrez que ce n'est pas un tableau. – Langdi

+0

L'utilisation de '[]' sur une chaîne ne fait que vous donner accès aux caractères à ces positions, le type de variable reste tel quel et n'est pas converti en ou à partir d'un tableau s'il ne l'était pas déjà. C'est comme si "leur" et "là" sonnaient de la même manière en anglais mais avaient des significations différentes ... –

1

Notez que commençant par php 5.5 vous pouvez vous référer à des caractères de chaîne par des indices de tableau, qui, dans la plupart des cas empêche le besoin pour la (les) solution (s) ci-dessus.

$str = 'abdefg'; 
echo $str[4]; // output: e 
0

Autre solution:

$string = 'abcdef'; 

$arr = []; 

for($i=0;$i<strlen($string);$i++){ 
    $arr[] = substr($string,$i,1); 
} 
0
<?php 

$str = "Hello Friend"; 

$arr1 = str_split($str); 
$arr2 = str_split($str, 3); 

print_r($arr1); 
echo "<br/>"; 
print_r($arr2); 

?> 

more info !!

Questions connexes