2010-07-19 28 views
13

¿Cómo puedo convertir una cadena en una matriz? Por ejemplo, tengo esta cadena:PHP convertir cadena a matriz

$str = 'abcdef'; 

Y quiero llegar:

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

En caso de que necesite acceder a un desplazamiento en la cadena específica, puede hacerlo sin dividir la cadena. Las cadenas se pueden usar con notación de acceso a matriz. '$ str [0]' devolvería 'a'. No puedes usar foreach o cualquiera de las funciones de la matriz en él. – Gordon

Respuesta

6

Puede recorrer la cadena y volver cada personaje o un conjunto de caracteres usando substr en php. A continuación hay un bucle 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

Cada cadena es una matriz en PHP

Así que simplemente hacer

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

La redacción de esta respuesta es engañosa – Pacerier

+7

Esto no es verdad. El hecho de que pueda usar [] con una cadena no la convierte en una matriz. Pruebe 'var_dump (is_array (" a string "));' y verá que NO es una matriz. – Langdi

+0

El uso de '[]' en una cadena de hecho solo le da acceso a los caracteres en esas posiciones, el tipo de variable permanece como está y no se convierte a una matriz o desde una matriz, si no lo fue. Es como que "su" y "allí" suenan igual en inglés pero tienen diferentes significados ... –

1

Tenga en cuenta que a partir de PHP 5.5 se puede hacer referencia a caracteres de la cadena por los índices de matriz, que en la mayoría de los casos evita la necesidad para la (s) solución (es) de arriba.

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

otra solución:

$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 !!