将字符串转换为字符数组

时间:2010-05-04 19:21:08

标签: php arrays string

在PHP中,我如何转换:

$result = abdcef;

进入一个数组:

$result[0] = a;
$result[1] = b;
$result[2] = c;
$result[3] = d;

10 个答案:

答案 0 :(得分:68)

您需要使用str_split()。

$result = str_split('abcdef');

http://us2.php.net/manual/en/function.str-split.php

答案 1 :(得分:23)

不知道你是否已经意识到这一点,但你可能不需要做任何事情(取决于你想要做什么)。

$string = "abcdef";
echo $string[1];
//Outputs "b"

因此,如果您只是需要一些简单的东西,那么您可以像数组一样访问它,而不需要任何麻烦。

答案 2 :(得分:4)

$result = "abcdef";
$result = str_split($result);

str_split函数上还有一个可选参数,可以拆分成x个字符的块。

答案 3 :(得分:3)

在str_split函数的帮助下,你将会这样做。

如下所示::

<?php 
$result = str_split('abcdef',1);
echo "<pre>";
print_r($result);
?>

答案 4 :(得分:2)

您可以使用str_split()函数:

$value = "abcdef";
$array = str_split($value);

如果您希望将字符串分成不同数量的数组值,您可以指定第二个参数:

$array = str_split($value, 2);

上面会将你的字符串分成两个数组。

答案 5 :(得分:1)

如果需要手动或基本编程,

最好你应该去&#34; str_split()&#34;

    $string = "abcdef";
    $resultArr = [];
    $strLength = strlen($string);
    for ($i = 0; $i < $strLength; $i++) {
        $resultArr[$i] = $string[$i];
    }
    print_r($resultArr);

输出:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)

答案 6 :(得分:0)

您可以使用str_split()功能

$array = str_split($string);

foreach ($array as $p){

    echo $p . "<br />";
}

答案 7 :(得分:0)

https://www.php.net/manual/en/function.str-split.php#refsect1-function.str-split-notes

<块引用>

str_split() 在处理多字节编码的字符串时将拆分为字节,而不是字符。

改用 mb_str_split()

答案 8 :(得分:0)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then LoadGrid End If End Sub Sub LoadGrid() Using cmdSQL As New SqlCommand("SELECT ID, PicName, PicPath FROM tblPictures", New SqlConnection(My.Settings.TEST4)) cmdSQL.Connection.Open() GridView1.DataSource = cmdSQL.ExecuteReader GridView1.DataBind() End Using End Sub 对于多字节字符是不安全的。

str_split() 需要 PHP 7.4+。

试试 mb_str_split() 的救援:

preg_split()

答案 9 :(得分:0)

如果您在过时的 PHP 版本(PHP7.4 以下的版本)中需要多字节支持,请在带有 unicode 标志的空模式上使用 preg_split()。无需使用捕获组减慢正则表达式引擎的速度。

代码:(Demo)

var_export(
    preg_split('//u', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
    // or preg_split('/.\K/us', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
    // or preg_split('/\X\K/u', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
);

对于 7.4 或更高版本的任何 PHP 版本,只需使用专用函数 mb_str_split()

mb_str_split('abcåäö')

输出:

array (
  0 => 'a',
  1 => 'b',
  2 => 'c',
  3 => 'å',
  4 => 'ä',
  5 => 'ö',
) 

作为对使用此页面上其他答案的研究人员的警告,如果您使用方括号语法通过偏移量访问字符或使用 str_split(),则在处理多字节字符时会得到错误的结果。

对于任何进行深入研究的人,我还应该提到 the \X (unicode version of the dot),它默认尊重换行符。 \X 与没有 . 修饰符的 s 略有不同。 Demo

var_export(preg_split('/.\K/u', $string, 0, PREG_SPLIT_NO_EMPTY)); // element [1] has two characters in it!
echo "\n---\n";
var_export(preg_split('/.\K/us', $string, 0, PREG_SPLIT_NO_EMPTY));
echo "\n---\n";
var_export(preg_split('/\X\K/u', $string, 0, PREG_SPLIT_NO_EMPTY));