将PHP字符串转换为数组

13

我该如何将一个字符串转换为数组?例如,我有这个字符串:

$str = 'abcdef';

我想要获得:

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
如果您需要访问字符串中的特定偏移量,可以直接使用数组访问符号而无需拆分字符串。例如$str[0]将返回字母'a'。但是,您不能在其上使用foreach或任何数组函数。 - Gordon
6个回答

35

如果我们简单地将其转换为一个数组,会发生什么? - Pacerier
3
你试过了吗?它会创建类似于array([0] => 'string')的东西。 - Rafael Barros

6
你可以通过在php中使用substr循环遍历字符串并返回每个字符或一组字符。以下是一个简单的循环。
$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';
*/

5
在PHP中每个字符串都是一个数组
所以只需简单地执行以下操作
$str = 'abcdef';
echo $str[0].$str[1].$str[2]; // -> abc

3
这个答案的措辞有误导性。 - Pacerier
9
这不是真的。你可以在字符串中使用[],但这并不意味着它是一个数组。尝试使用 var_dump(is_array("a string"));,你会发现它不是一个数组。 - Langdi
在字符串上使用[]实际上只是让您访问那些位置的字符,变量类型保持不变,如果它还没有转换为或从数组转换,则不会转换为数组。这就像英语中“their”和“there”发音相同但具有不同的含义一样... - scrowler

2
注意,从php 5.5开始,您可以通过数组索引引用字符串字符,在大多数情况下,这可以避免上述解决方案的需要。
$str = 'abdefg';
echo $str[4]; // output: f

1
输出"f",因为计数器从0开始。 - Cypherjac
@Cypherjac - 谢谢。发现得好。我已经更新了答案。 - Phil Hilton

0
<?php

$str = "Hello Friend";

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

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

?>

更多信息!!


0

其他解决方案:

$string = 'abcdef';

$arr = [];

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接