我有一个字符串,例如:
“0123456789”
我需要将每个字符拆分成一个数组。
为此,我尝试了以下代码:
“0123456789”
我需要将每个字符拆分成一个数组。
为此,我尝试了以下代码:
explode('', '123545789');
但是它给了我一个明显的警告:警告:在explode中未定义分隔符) ..
我该如何解决这个问题?我目前没有看到任何方法,特别是只有一个函数。
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split 函数有一个可选参数,即分块长度(默认为1),因此您可以进行以下操作:
$array = str_split("aabbccdd", 2);
// $array[0] = aa
// $array[1] = bb
// $array[2] = cc etc ...
你还可以把字符串看作一个数组,以此来获取其中的部分:
$string = "hello";
echo $string[1];
// outputs "e"
您可以像访问数组一样访问字符串中的字符:
$s = 'abcd';
echo $s[0];
输出 'a'
试试这个:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
$str
没有长度的情况下返回一个空数组,则不是这样。 - hakre$str
进行 strlen 检查并且 strlen
返回 0,则直接将 $char_array = array()
设置为足够快。 - Travis Westonstr_split
可以完成这个任务。需要注意的是,在PHP中,字符串可以像字符数组一样访问。在大多数情况下,您不需要将字符串拆分为“新”数组。
这是一个与多字节(UTF-8)字符串一起使用的示例。
$str = 'äbcd';
// PHP 5.4.8 allows null as the third argument of mb_strpos() function
do {
$arr[] = mb_substr( $str, 0, 1, 'utf-8' );
} while ( $str = mb_substr( $str, 1, mb_strlen( $str ), 'utf-8' ) );
也可以使用preg_split()
(preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
)来实现,但与上面的示例不同,该方法在处理字符串大小无关紧要时运行速度几乎相同,而对于大型字符串,preg_split()
速度较慢。
试试这个:
$str = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)
Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)
试试这个:
$str = '546788';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
$array = str_split($string);
explode('', $string);
explode(',', $string);
explode('',$string);
会让PHP失败,为什么还要尝试呢? - mickmackusa$array = str_split("$string");
代码会相当好地工作,但是如果您想保留该字符串中的特殊字符,并对它们进行一些操作,那么我建议使用
do {
$array[] = mb_substr($string, 0, 1, 'utf-8');
} while ($string = mb_substr($string, 1, mb_strlen($string), 'utf-8'));
因为在我的一些个人用途中,当涉及到特殊字符时,它已被证明更加可靠。